예제 #1
0
        public static long ExecutePart2(SimpleComputer.Instruction[] input)
        {
            var program = input;

            for (int indexToReplace = 0; indexToReplace < program.Length; indexToReplace++)
            {
                var oldInstruction = input[indexToReplace];
                if (!TryToFixProgram(program, indexToReplace))
                {
                    continue;
                }

                var result = SimpleComputer.ExecuteProgram(program, 1);

                if (result.pc == input.Length)
                {
                    return(result.acc);
                }
                program[indexToReplace] = oldInstruction;
            }
            return(-1);
        }
예제 #2
0
 public long ExecutePart1()
 {
     return((long)SimpleComputer.ExecuteProgram(_instructions, 1).acc);
 }