Woohoo! I've gotten through all Euler problems solved by more than 20,000 people — not an official milestone, but one that feels important nonetheless. The last of these, the tersely-worded problem 52, concerned multiples/permutations:

It can be seen that the number, 125874, and its double, 251748, contain exactly the same digits, but in a different order.

Find the smallest positive integer, x, such that 2_x_, 3_x_, 4_x_, 5_x_, and 6_x_, contain the same digits.

To me, the phrase "find the smallest positive integer that ____" cries out for a brute force solution. There didn't seem to be anyway to preëmptively exclude certain values from being tested to see if they fit the problem requirements, so I focused on optimizing my testing algorithm. I borrowed a few lines of code from my solutions to problems 32 and 38 that check to see if one number is a permutation of another. If you take a number, convert it to a string, convert that string to a character array, and then sort that array, you will end up with the same array as you would performing the same sequence of operations on a permutation of the original number. Comparing the sorted character arrays derived from two numbers will tell you if they are permutations of each other.

Rather than checking each value `x` against 2`x`, 3`x`, 4`x`, 5`x`, and 6`x`, I checked it first against 2`x`, then against 3`x`, then against 4`x`, and so on, moving to the next value `x` when `nx` didn't yield a permutation of `x`.

```using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Problem052
{
class Program
{
static void Main(string[] args)
{
int permutableMultiples = 0;
bool multipleFound = false;

for (int i = 1; !multipleFound; i++)
{
string baseMultiple = i.ToString();
char[] baseChars = baseMultiple.ToArray();
Array.Sort(baseChars);

for (int j = 2; j < 7; j++)
{
char[] baseMultiplied = (i * j).ToString().ToArray();
Array.Sort(baseMultiplied);
if (!baseChars.SequenceEqual(baseMultiplied))
break;

if (j == 6)
{
permutableMultiples = i;
multipleFound = true;
break;
}
}
}

Console.WriteLine(permutableMultiples);
}
}
}
```