static void Main(string[] args) { HanoiTower hanoi = new HanoiTower(); Console.WriteLine("Enter number of discs: "); int n = Convert.ToInt32(Console.ReadLine()); hanoi.moveDiscs(n, "Peg A", "Peg C", "Peg B"); // had to swap Peg B and C... }
static void Main(string[] args) { _columnSize = Math.Max(6, GetDiscWidth(DISCS_COUNT) + 2); HanoiTower algorithm = new HanoiTower(DISCS_COUNT); algorithm.MoveCompleted += Algorithm_Visualize; Algorithm_Visualize(algorithm, EventArgs.Empty); algorithm.Start(); Console.Read(); }
private static char[][] InitializeVisualization(HanoiTower algorithm) { char[][] visualization = new char[algorithm.DiscsCount][]; for (int i = 0; i < visualization.Length; i++) { visualization[i] = new char[_columnSize * 3]; for (int j = 0; j < _columnSize * 3; j++) { visualization[i][j] = ' '; } } return(visualization); }
static void Main(string[] args) { Console.WriteLine("Problem hanojskih stolpov - Jernej Žagar"); Console.WriteLine(); byte i = 1; foreach (string stolp in Enum.GetNames(typeof(Tower))) { Console.WriteLine(" " + i + " " + stolp); i++; } Console.WriteLine(); Console.WriteLine("Izberi številko problema in pritisni Enter."); string izbira = Console.ReadLine(); Console.WriteLine("Izberi število diskov in pritisni Enter."); string stDiskov = Console.ReadLine(); int discs = Convert.ToInt32(stDiskov); Console.WriteLine("Izberi začetni stolp in pritisni Enter."); string startPeg = Console.ReadLine(); byte start = Convert.ToByte(startPeg); Console.WriteLine("Izberi končni stolp in pritisni Enter."); string endPeg = Console.ReadLine(); byte final = Convert.ToByte(endPeg); HanoiTower vrstaStolpa = HanoiTowerFactory.GetHanoiTower(izbira, discs, start, final); byte[] zacetnoStanje = ConvertNumbers.SetPosition(vrstaStolpa.Start, vrstaStolpa.Discs); Console.WriteLine("Začetek"); DateTime dtStart = DateTime.Now; vrstaStolpa.DolzinaNajkrajsePoti(zacetnoStanje); DateTime dtEnd = DateTime.Now; Console.WriteLine("Konec"); Console.WriteLine($"Čas izvajanja= {(dtEnd - dtStart).TotalSeconds}"); }
private static void Algorithm_Visualize(object sender, EventArgs e) { Console.Clear(); HanoiTower algorithm = (HanoiTower)sender; if (algorithm.DiscsCount <= 0) { return; } char[][] visualization = InitializeVisualization(algorithm); PrepareColumn(visualization, 1, algorithm.DiscsCount, algorithm.From); PrepareColumn(visualization, 2, algorithm.DiscsCount, algorithm.To); PrepareColumn(visualization, 3, algorithm.DiscsCount, algorithm.Auxiliary); Console.WriteLine(Center("FROM") + Center("TO") + Center("Auxiliary")); DrawVisualization(visualization); Console.WriteLine(); Console.WriteLine($"Number of moves: {algorithm.MovesCount}"); Console.WriteLine($"Number of dics: {algorithm.DiscsCount}"); Thread.Sleep(DELAY_MS); }