Example #1
0
        public override int SolvePart2()
        {
            var program0 = new DuetProgram(instructions, 0);
            var program1 = new DuetProgram(instructions, 1);

            program0.LinkedProgram = program1;
            program1.LinkedProgram = program0;

            int valuesSent = 0;

            program1.ValueSent += _ =>
            {
                valuesSent++;
                return(false);
            };

            do
            {
                program0.ResumeExecution();
                program1.ResumeExecution();
            }while (!program0.Deadlocked);
            return(valuesSent);
        }