static void P2() { var lines = Utilities.GetStringFromFile("Day13.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); vm.WriteProgram(lines); vm.WriteMemory(0, 2); processOutputs(vm); //Draw(grid); while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { processOutputs(vm); if (ballPos < paddlepos) { vm.WriteInput(-1); } else if (ballPos > paddlepos) { vm.WriteInput(1); } else { vm.WriteInput(0); } Draw(grid); if (blockcount == 0) { break; } } processOutputs(vm); Draw(grid); }
public static void P2() { var lines = Utilities.GetStringFromFile("Day17.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { FriendlyLogging = false }); vm.WriteProgram(lines); vm.WriteMemory(0, 2); var input = "65,44,65,44,66,44,67,44,66,44,67,44,66,44,67,44,67,44,65,10,76,44,49,48,44,82,44,56,44,82,44,56,10,76,44,49,48,44,76,44,49,50,44,82,44,56,44,82,44,49,48,10,82,49,48,44,76,49,50,44,82,49,48,10".Split(",").Select(int.Parse).ToList(); var main = "65,44,65,44,66,44,67,44,66,44,67,44,66,44,67,44,67,44,65,10".Split(",").Select(int.Parse).ToList(); var A = "76,44,49,48,44,82,44,56,44,82,44,56,10".Split(",").Select(int.Parse).ToList(); var B = "76,44,49,48,44,76,44,49,50,44,82,44,56,44,82,44,49,48,10".Split(",").Select(int.Parse).ToList(); var C = "82,44,49,48,44,76,44,49,50,44,82,44,49,48,10".Split(",").Select(int.Parse).ToList(); //foreach (var inp in input) //{ // vm.WriteInput(inp); //} //vm.WriteInput(110); //vm.WriteInput(10); var inpPhase = 0; while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { while (vm.outputs.Count > 0) { Console.Write((char)vm.outputs.Dequeue()); } switch (inpPhase) { case 0: foreach (var inp in main) { vm.WriteInput(inp); } inpPhase++; break; case 1: foreach (var inp in A) { vm.WriteInput(inp); } inpPhase++; break; case 2: foreach (var inp in B) { vm.WriteInput(inp); } inpPhase++; break; case 3: foreach (var inp in C) { vm.WriteInput(inp); } inpPhase++; break; case 4: vm.WriteInput((int)'Y'); vm.WriteInput(10); inpPhase++; break; } } var x = vm.outputs.First(); var y = vm.outputs.Last(); int e = 0; var s = ""; while (vm.outputs.Count > 0) { s += (char)vm.outputs.Dequeue(); e++; if (e == 2051) { Console.Clear(); Console.WriteLine(s); s = ""; e = 0; Thread.Sleep(250); } } while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { } }