public int Solve1(string input) { var(ipRegister, program) = ElfCodeMachine.ParseInputToProgram(input); long ip = 0; var registers = new long[] { 0, 0, 0, 0, 0, 0 }; while (ip < program.Length) { registers[ipRegister] = ip; ElfCodeMachine.Doop(program[ip], registers); ip = registers[ipRegister]; ip++; } output.WriteLine($"REGISTERS: {string.Join(";", registers)}"); return((int)registers[0]); }
private int FindNumberOfInstructionsNeeded(int ipRegister, int[][] program, int maxLoops = 1000) { var counter = 0; long ip = 0; var registers = new long[] { 0, 0, 0, 0, 0, 0 }; while (ip < program.Length) { registers[ipRegister] = ip; ElfCodeMachine.Doop(program[ip], registers); ip = registers[ipRegister]; ip++; if (counter++ > maxLoops) { throw new NoSolutionFoundException(); } } return(counter); }