protected override object SolvePart2() { var vm = new IntcodeVM(Input[0]); for (var noun = 0; noun < 100; noun++) { for (var verb = 0; verb < 100; verb++) { vm.Write(1, noun); vm.Write(2, verb); vm.Execute(); if (vm.Read(0) != 19690720) { vm.ResetVM(); continue; } return(100 * noun + verb); } } return(null); }
protected override object SolvePart1() { var vm = new IntcodeVM(Input[0]); vm.Write(1, 12); vm.Write(2, 2); vm.Execute(); return(vm.Read(0)); }
protected override object SolvePart2() { var vm = new IntcodeVM(Input[0]); vm.Write(0, 2); var paddle = (X : -1L, Y : -1L); var ball = (X : -1L, Y : -1L); while (vm.Execute() != IntcodeVM.HaltMode.Terminated) { var(Paddle, Ball, _) = ProcessOutput(vm); if (Paddle.X != -1 && Paddle.Y != -1) { paddle = Paddle; } if (Ball.X != -1 && Ball.Y != -1) { ball = Ball; } if (ball.X < paddle.X) { vm.Input.Enqueue(-1); } else if (ball.X > paddle.X) { vm.Input.Enqueue(1); } else { vm.Input.Enqueue(0); } } var finalState = ProcessOutput(vm); return(finalState.Score); }