diff options
author | Ben Harris <ben@tilde.team> | 2021-11-09 16:52:21 -0500 |
---|---|---|
committer | Ben Harris <ben@tilde.team> | 2021-11-09 16:52:21 -0500 |
commit | 2c9737d6d2821f1f46004965905d037ab00f6518 (patch) | |
tree | 50966a52514a98c4bdaf9f8d3532067ddcd855f8 /aoc2019/Day07.cs | |
parent | bbd0d2b4db5f40ddf09c456f195e68f91251172c (diff) |
update to .net 6
Diffstat (limited to 'aoc2019/Day07.cs')
-rw-r--r-- | aoc2019/Day07.cs | 93 |
1 files changed, 44 insertions, 49 deletions
diff --git a/aoc2019/Day07.cs b/aoc2019/Day07.cs index 10684b9..4a45842 100644 --- a/aoc2019/Day07.cs +++ b/aoc2019/Day07.cs @@ -1,67 +1,62 @@ -using System.Collections.Generic; -using System.Linq; -using aoc2019.lib; +namespace aoc2019; -namespace aoc2019 +public sealed class Day07 : Day { - public sealed class Day07 : Day + private readonly IntCodeVM[] Amplifiers = new IntCodeVM[5]; + + public Day07() : base(7, "Amplification Circuit") { - private readonly IntCodeVM[] Amplifiers = new IntCodeVM[5]; + for (var i = 0; i < 5; i++) Amplifiers[i] = new IntCodeVM(Input.First()); + } - public Day07() : base(7, "Amplification Circuit") - { - for (var i = 0; i < 5; i++) Amplifiers[i] = new IntCodeVM(Input.First()); - } + public override string Part1() + { + long i, largest = 0; - public override string Part1() + foreach (var phaseSeq in Enumerable.Range(0, 5).Permute()) { - long i, largest = 0; - - foreach (var phaseSeq in Enumerable.Range(0, 5).Permute()) + i = 0; + foreach (var (vm, phase) in Amplifiers.Zip(phaseSeq)) { - i = 0; - foreach (var (vm, phase) in Amplifiers.Zip(phaseSeq)) - { - vm.Reset(); - vm.Run(phase, i); - i = vm.Result; - } - - if (i > largest) - largest = i; + vm.Reset(); + vm.Run(phase, i); + i = vm.Result; } - return $"{largest}"; + if (i > largest) + largest = i; } - public override string Part2() - { - long i, largest = 0; + return $"{largest}"; + } - foreach (var phaseSeq in Enumerable.Range(5, 5).Permute()) - { - i = 0; - foreach (var (vm, phase) in Amplifiers.Zip(phaseSeq)) - { - vm.Reset(); - vm.AddInput(phase); - } + public override string Part2() + { + long i, largest = 0; - var vms = new Queue<IntCodeVM>(Amplifiers); - while (vms.Count > 0) - { - var vm = vms.Dequeue(); - var haltType = vm.Run(i); - if (haltType == IntCodeVM.HaltType.Waiting) - vms.Enqueue(vm); - i = vm.Result; - } + foreach (var phaseSeq in Enumerable.Range(5, 5).Permute()) + { + i = 0; + foreach (var (vm, phase) in Amplifiers.Zip(phaseSeq)) + { + vm.Reset(); + vm.AddInput(phase); + } - if (i > largest) - largest = i; + var vms = new Queue<IntCodeVM>(Amplifiers); + while (vms.Count > 0) + { + var vm = vms.Dequeue(); + var haltType = vm.Run(i); + if (haltType == IntCodeVM.HaltType.Waiting) + vms.Enqueue(vm); + i = vm.Result; } - return $"{largest}"; + if (i > largest) + largest = i; } + + return $"{largest}"; } -} \ No newline at end of file +} |