public class Test {
public List<String> ShiftedNumbers = new List<string>();
public static Random Random = new Random();
public String TakeOne(int lower, int upper, String Content)
{
return Content.Substring((int)Random.Next(lower, upper),1);
}
public List<String> Start(String NumbersToShift)
{
bool found = false;
StringBuilder SB = new StringBuilder();
String Current = "";
int Faculty = GetFactorial(NumbersToShift.Length);
do
{
SB.Clear();
for (int i = 0; i <= NumbersToShift.Length - 1; i++)
{
Current = TakeOne(0, NumbersToShift.Length, NumbersToShift);
if (SB.ToString().IndexOf(Current) <= -1)
{
SB.Append(Current);
}
else if (SB.ToString().Length >= NumbersToShift.Length)
{
break;
}
else if (SB.ToString().IndexOf(Current) >= 0)
{
i = i - 1;
}
}
found = false;
for (int i = 0; i <= ShiftedNumbers.Count() - 1; i++)
{
if (ShiftedNumbers[i] == SB.ToString())
{
found = true;
break;
}
}
if (found == false)
{
ShiftedNumbers.Add(SB.ToString());
}
} while (ShiftedNumbers.Count() < Faculty);
return ShiftedNumbers;
}
public int GetFactorial(int Length)
{
int R = 1;
for (int i = 1; i<= Length; i++)
{
R = R * i;
}
return R;
}
}