I thought this would be a fun little exercise to try. This puzzle is generally used to teach recursion in CS classes, but I have never actually tried to implement it.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TowersOfHanoiCs { class Program { static Listpeg1; static List peg2; static List peg3; static void Main(string[] args) { peg1 = new List (); peg2 = new List (); peg3 = new List (); for (int i = 1; i < 8; i++) { peg1.Add(i); } Display(); MoveDisk(7, peg1, peg2, peg3); Console.ReadLine(); } static void MoveDisk(int disk, List source, List destination, List temp) { int position = source.IndexOf(disk); if (position == 0) { source.Remove(disk); destination.Insert(0, disk); Display(); } else { int nextDisk = source[position - 1]; MoveDisk(nextDisk, source, temp, destination); MoveDisk(disk, source, destination, temp); MoveDisk(nextDisk, temp, destination, source); } } static void Display() { DisplayPeg(peg1); DisplayPeg(peg2); DisplayPeg(peg3); Console.WriteLine("----------"); } static void DisplayPeg(List peg) { foreach (int x in peg) { Console.Write(x + " "); } Console.WriteLine(); } } }