Tuesday, September 05, 2006

Hanoi: A simple C# solution

Here is a simple towers of Hanoi solution in C# public static void SolveSubHanoi(int n, string start, string end, string intermediate) { System.Console.WriteLine(n + " " + start + " " + end + " " + intermediate); if (n <= 1) { //move topmost from start peg to end peg System.Console.WriteLine("c1:" + start + " --> " + end); } else { //move n-1 discs to intermediate position SolveSubHanoi(n - 1, start, intermediate, end); //now move the n(th) disc from start to end System.Console.WriteLine("c2:" + start + " --> " + end); //now move the n-1 discs from intermediate to end SolveSubHanoi(n - 1, intermediate, end, start); } } And all you do is call it so: SolveSubHanoi(n, "Peg A", "Peg B", "Peg C"); //where n is the number of discs. "Peg A" contains all the discs at start and "Peg B" will get all the discs at the end. Recursively, this solution solves the movement of (n-1) discs at each step. This is the basic idea for the solution of the 750 points problem in the practice room of Google CodeJam.

No comments: