protected override string?SolvePartOne() { var program = new SoundProgram(Input); bool ret = false; do { ret = program.Run(); } while (ret); return(program.firstRcv.ToString()); }
protected override string?SolvePartTwo() { var p0 = new SoundProgram(Input, 0); var p1 = new SoundProgram(Input, 1); // Set the remote queues up p0.remote = p1.queue; p1.remote = p0.queue; bool ret0 = false; bool ret1 = false; bool deadlocked = false; do { ret0 = p0.Run(); ret1 = p1.Run(); // If deadlocked deadlocked = p0.IsDeadlocked() && p1.IsDeadlocked(); } while (ret0 && ret1 && !deadlocked); return(p1.sendCount.ToString()); }