public void Solve(string fileText) { var lines = new Queue <string>(fileText.SplitIntoLines()); var startStateName = CaptureSubstringWithPattern(lines.Dequeue(), "Begin in state (\\w+)."); var numberOfIterations = CaptureIntWithPattern(lines.Dequeue(), "after (\\d+) steps"); var transitions = ParseTransitions(lines); var turingMachine = new TuringMachine(startStateName, transitions); turingMachine.RunForIterations(numberOfIterations); var answer = turingMachine.GetChecksum(); Output.Answer(answer); }