public void Sample_Part2() { var instructions = new[] { "snd 1", "snd 2", "snd p", "rcv a", "rcv b", "rcv c", "rcv d" }; var zero = new Day18Part2 { Registers = { ["p"] = 0 } }; var one = new Day18Part2 { Registers = { ["p"] = 1 } }; zero.InputQueue = one.OutputQueue; zero.OutputQueue = one.InputQueue; zero.OtherBlocked = one.IsBlocked; one.OtherBlocked = zero.IsBlocked; var task1 = Task.Run(() => zero.ProcessInstructions(instructions)); var task2 = Task.Run(() => one.ProcessInstructions(instructions)); Task.WaitAll(task1, task2); Assert.AreEqual(3, zero.SendCount); Assert.AreEqual(3, one.SendCount); }
public void Part2() { var instructions = FileReader.ReadFile("day18.txt"); var zero = new Day18Part2 { Registers = { ["p"] = 0 }, Id = 0 }; var one = new Day18Part2 { Registers = { ["p"] = 1 }, Id = 1 }; zero.InputQueue = one.OutputQueue; zero.OutputQueue = one.InputQueue; zero.OtherBlocked = one.IsBlocked; one.OtherBlocked = zero.IsBlocked; var task1 = Task.Run(() => zero.ProcessInstructions(instructions)); var task2 = Task.Run(() => one.ProcessInstructions(instructions)); Task.WaitAll(task1, task2); Assert.AreEqual(7493, one.SendCount); }