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); }
public long ExecutePart1() { return((long)SimpleComputer.ExecuteProgram(_instructions, 1).acc); }