From a0d8bc1f07970a4f7c2113621bbc904170f71dc8 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Tue, 14 Nov 2023 15:40:45 -0500 Subject: [PATCH] 2015 day 23 --- AOC.Test/Test2015.cs | 1 + AOC2015/Day23.cs | 45 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/AOC.Test/Test2015.cs b/AOC.Test/Test2015.cs index 0d73fa4..640e519 100644 --- a/AOC.Test/Test2015.cs +++ b/AOC.Test/Test2015.cs @@ -27,6 +27,7 @@ public class Test2015 [DataRow(typeof(Day19), "576", "207")] [DataRow(typeof(Day20), "665280", "705600")] [DataRow(typeof(Day21), "78", "148")] + [DataRow(typeof(Day23), "255", "334")] public void CheckAllDays(Type dayType, string part1, string part2) { Common.CheckDay(dayType, part1, part2); diff --git a/AOC2015/Day23.cs b/AOC2015/Day23.cs index c0ce8cb..afa19a9 100644 --- a/AOC2015/Day23.cs +++ b/AOC2015/Day23.cs @@ -9,7 +9,46 @@ public sealed class Day23() : Day(2015, 23, "Opening the Turing Lock") { } - public override object Part1() => ""; + private int RunOperations(int initialA = 0, int initialB = 0) + { + Dictionary registers = new(); + registers['a'] = initialA; + registers['b'] = initialB; - public override object Part2() => ""; -} + var input = Input.ToList(); + for (var i = 0; i < input.Count;) + { + switch (input[i][0..3]) + { + case "hlf": + registers[input[i++][4]] /= 2; + break; + case "tpl": + registers[input[i++][4]] *= 3; + break; + case "inc": + registers[input[i++][4]]++; + break; + case "jmp": + i += int.Parse(input[i][4..]); + break; + case "jie": + i += registers[input[i][4]] % 2 == 0 + ? int.Parse(input[i][7..]) + : 1; + break; + case "jio": + i += registers[input[i][4]] == 1 + ? int.Parse(input[i][7..]) + : 1; + break; + } + } + + return registers['b']; + } + + public override object Part1() => RunOperations(); + + public override object Part2() => RunOperations(1); +} \ No newline at end of file