public override void First() { Echo("Provide code 1"); icm.Init("Day5/diagnostics.ic"); icm.Input.Write(1); icm.Run(); }
public override void First() { icm.Init("Day2/gravassist.ic"); icm.mem[1] = 12; icm.mem[2] = 2; // Patch code icm.Run(); Echo($"Result {icm.mem[0]}"); ValidateAnswer(icm.mem[0], 3790645); }
public object PartOne(string input) { var securityRoom = "== Security Checkpoint =="; var icm = new IntCodeMachine(input); var description = icm.Run().ToAscii(); VisitRooms(securityRoom, icm, description, args => { foreach (var item in args.items) { if (item != "infinite loop") { var takeCmd = "take " + item; var clone = icm.Clone(); clone.Run(takeCmd); if (!clone.Halted() && Inventory(clone).Contains(item)) { icm.Run(takeCmd); } } } return(null); }); var door = VisitRooms(securityRoom, icm, description, args => args.room == securityRoom ? args.doors.Single(door => door != ReverseDir(args.doorTaken)) : null); Random r = new Random(); void TakeOrDrop(string cmd, List <string> from, List <string> to) { var i = r.Next(from.Count); var item = from[i]; from.RemoveAt(i); to.Add(item); icm.Run(cmd + " " + item); } var inventory = Inventory(icm).ToList(); var floor = new List <string>(); while (true) { var output = icm.Run(door).ToAscii(); if (output.Contains("heavier")) { TakeOrDrop("take", floor, inventory); } else if (output.Contains("lighter")) { TakeOrDrop("drop", inventory, floor); } else { return(long.Parse(Regex.Match(output, @"\d+").Value)); } } }
string[] Screenshot(string input) { var icm = new IntCodeMachine(input); var output = icm.Run(); return(output.ToAscii().Split("\n").Where(x => !string.IsNullOrWhiteSpace(x)).ToArray()); }
long ExecIntCode(IntCodeMachine icm, int noun, int verb) { icm.Reset(); icm.memory[1] = noun; icm.memory[2] = verb; icm.Run(); return(icm.memory[0]); }
public object PartOne(string input) { var icm = new IntCodeMachine(input); var output = icm.Run(); var chunks = Chunk(output, 3); return(chunks.Count(x => x[2] == 2)); }
public void Test3() { long[] program = "109,1,204,-1,1001,100,1,100,1008,100,16,101,1006,101,0,99".Split(',').Select(long.Parse).ToArray(); IntCodeMachine icm = new IntCodeMachine(program); icm.Run(); Assert.AreEqual(109, icm.GetNextOutput()); }
public void Test5() { long[] program = "104,1125899906842624,99".Split(',').Select(long.Parse).ToArray(); IntCodeMachine icm = new IntCodeMachine(program); icm.Run(); Assert.AreEqual(1125899906842624, icm.GetNextOutput()); }
public void Test4() { long[] program = "1102,34915192,34915192,7,4,7,99,0".Split(',').Select(long.Parse).ToArray(); IntCodeMachine icm = new IntCodeMachine(program); icm.Run(); Assert.AreEqual(1219070632396864, icm.GetNextOutput()); }
public object PartTwo(string input) { var program = GeneratePrograms(Path(input)).First(); var icm = new IntCodeMachine(input); icm.memory[0] = 2; return(icm.Run(program).Last()); }
public void Test1() { long[] program = "109,2000,109,19,99".Split(',').Select(long.Parse).ToArray(); IntCodeMachine icm = new IntCodeMachine(program); icm.Run(); Assert.AreEqual(2019, icm.CurrentRelativeBase); }
public override void Second() { var icm = new IntCodeMachine(); icm.Init("Day9/boost.ic"); icm.Input.Write(2); // Boost code icm.Run(); var boostcode = icm.Output.Read(); Echo($"output: {boostcode}"); ValidateAnswer(boostcode, 49115); }
public override void First() { var icm = new IntCodeMachine(); icm.Init("Day9/boost.ic"); //icm.Trace = true; icm.Input.Write(1); // Test code icm.Run(); var testOutput = icm.Output.Read(); Echo($"debug output: {testOutput}"); ValidateAnswer(testOutput, 2775723069); }
public void Day5BExample4() { string memory = "3,9,8,9,10,9,4,9,99,-1,8"; var input = new long[1] { 8 }; IntCodeMachine machine = new IntCodeMachine(Array.ConvertAll(memory.Split(','), long.Parse), input); machine.Run(); Assert.AreEqual(1, machine.GetNextOutput()); }
public void Day5BExample3() { string memory = "3,21,1008,21,8,20,1005,20,22,107,8,21,20,1006,20,31,1106,0,36,98,0,0,1002,21,125,20,4,20,1105,1,46,104,999,1105,1,46,1101,1000,1,20,4,20,1105,1,46,98,99"; var input = new long[1] { 9 }; IntCodeMachine machine = new IntCodeMachine(Array.ConvertAll(memory.Split(','), long.Parse), input); machine.Run(); Assert.AreEqual(1001, machine.GetNextOutput()); }
public object PartTwo(string input) { var icm = new IntCodeMachine(input); icm.memory[0] = 2; var score = 0; var icolBall = -1; var icolPaddle = -1; var dir = 0; while (true) { var output = icm.Run(dir); var chunks = Chunk(output, 3); foreach (var chunk in chunks) { var(icol, irow, block) = (chunk[0], chunk[1], chunk[2]); if ((icol, irow) == (-1, 0)) { score = (int)block; } if (block == 3) { icolPaddle = (int)icol; } else if (block == 4) { icolBall = (int)icol; } } if (icm.Halted()) { break; } dir = icolBall <icolPaddle ? -1 : icolBall> icolPaddle ? 1 : 0; } return(score); }
public (ImmutableIntCodeMachine iicm, IntCodeOutput output) Run(params long[] input) { var immutableIntCodeMachine = new ImmutableIntCodeMachine(this.icm.Clone()); return(immutableIntCodeMachine, immutableIntCodeMachine.icm.Run(input)); }