using System.Collections.Generic;
public static string workingString;
public static string defaultString;
public static int sideLength = 4;
public static int globalStepCount = 0;
public static void Main()
Euler15 prg = new Euler15();
workingString = new string('R', sideLength);
for(int count = 0; count <sideLength; count++)
workingString = workingString.Insert(workingString.Length, "D");
defaultString=workingString;
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength;N++)
workingString = SwapChars(workingString,sideLength-1+N,sideLength+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength);
workingString = SwapChars(workingString,sideLength-2,sideLength-1);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-1;N++)
workingString = SwapChars(workingString,sideLength+N,sideLength+1+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+1);
workingString = SwapChars(workingString,sideLength-2,sideLength);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-2;N++)
workingString = SwapChars(workingString,sideLength+1+N,sideLength+2+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+2);
workingString = SwapChars(workingString,sideLength-2,sideLength+1);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-3;N++)
workingString = SwapChars(workingString,sideLength+2+N,sideLength+3+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+3);
workingString = SwapChars(workingString,sideLength-2,sideLength+2);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-4;N++)
workingString = SwapChars(workingString,sideLength+4+N,sideLength+5+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength);
workingString = SwapChars(workingString,sideLength-2,sideLength-1);
workingString = SwapChars(workingString,sideLength-3,sideLength-2);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-1;N++)
workingString = SwapChars(workingString,sideLength+N,sideLength+1+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+1);
workingString = SwapChars(workingString,sideLength-2,sideLength);
workingString = SwapChars(workingString,sideLength-3,sideLength-1);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-2;N++)
workingString = SwapChars(workingString,sideLength+1+N,sideLength+2+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+2);
workingString = SwapChars(workingString,sideLength-2,sideLength+1);
workingString = SwapChars(workingString,sideLength-3,sideLength);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-3;N++)
workingString = SwapChars(workingString,sideLength+2+N,sideLength+3+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+3);
workingString = SwapChars(workingString,sideLength-2,sideLength+2);
workingString = SwapChars(workingString,sideLength-3,sideLength+1);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-4;N++)
workingString = SwapChars(workingString,sideLength+3+N,sideLength+4+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+1);
workingString = SwapChars(workingString,sideLength-2,sideLength);
workingString = SwapChars(workingString,sideLength-3,sideLength-2);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-2;N++)
workingString = SwapChars(workingString,sideLength+1+N,sideLength+2+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+2);
workingString = SwapChars(workingString,sideLength-2,sideLength+1);
workingString = SwapChars(workingString,sideLength-3,sideLength-2);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-3;N++)
workingString = SwapChars(workingString,sideLength+2+N,sideLength+3+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+3);
workingString = SwapChars(workingString,sideLength-2,sideLength+2);
workingString = SwapChars(workingString,sideLength-3,sideLength-2);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-4;N++)
workingString = SwapChars(workingString,sideLength+3+N,sideLength+4+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+2);
workingString = SwapChars(workingString,sideLength-2,sideLength+1);
workingString = SwapChars(workingString,sideLength-3,sideLength-1);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-3;N++)
workingString = SwapChars(workingString,sideLength+2+N,sideLength+3+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = defaultString;
workingString = SwapChars(workingString,sideLength-1,sideLength+3);
workingString = SwapChars(workingString,sideLength-2,sideLength+2);
workingString = SwapChars(workingString,sideLength-3,sideLength);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-4;N++)
workingString = SwapChars(workingString,sideLength+3+N,sideLength+4+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
workingString = SwapChars(workingString,sideLength-(sideLength+1),sideLength-(sideLength+0));
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
for(int N = 0; N < sideLength-4;N++)
workingString = SwapChars(workingString,sideLength+3+N,sideLength+4+N);
Console.WriteLine(workingString);
Console.WriteLine(globalStepCount);
Console.WriteLine(globalStepCount);
Console.WriteLine("Final Total = "+2*globalStepCount);
public static string SwapChars(String str, int index1, int index2)
char[] strChar = str.ToCharArray();
strChar[index1] = str[index2];
strChar[index2] = str[index1];
return new String(strChar);