static void Main(string[] args) { while (true) { Console.Clear(); if (!InputHandler.TryProcessInput(out var result)) { Console.WriteLine("잘못된 입력입니다."); continue; } var cellGrid = CellGridStringConverter.ConvertFrom(result.Width, result.Height, result.CellGridLines); var simulator = new GameOfLifeSimulater(cellGrid); var outputLeft = Console.CursorLeft; var outputTop = Console.CursorTop; while (true) { Console.SetCursorPosition(outputLeft, outputTop); Console.WriteLine(); var snapshot = simulator.Simulate(); var cellGridLines = CellGridStringConverter.ConvertTo(snapshot.CellGrid); Console.WriteLine($"# Generation {snapshot.Generation} "); Array.ForEach(cellGridLines, Console.WriteLine); Console.ReadKey(); } } }
void TestGameOfLife(int width, int height, string[] input, string[] output) { var cellGrid = CellGridStringConverter.ConvertFrom(width, height, input); var simulator = new GameOfLifeSimulater(cellGrid); var snapshot = simulator.Simulate(); Assert.AreEqual(1, snapshot.Generation); var outputCellGridLines = CellGridStringConverter.ConvertTo(snapshot.CellGrid); CollectionAssert.AreEqual(output, outputCellGridLines); }