ben
/
aoc
1
0
Fork 0
aoc/AOC2015/Day23.cs

53 lines
1.5 KiB
C#
Raw Normal View History

2022-12-03 05:55:49 +00:00
namespace AOC2015;
/// <summary>
2022-12-03 05:41:38 +00:00
/// Day 23: <a href="https://adventofcode.com/2015/day/23"/>
/// </summary>
2023-09-20 18:38:58 +00:00
public sealed class Day23() : Day(2015, 23, "Opening the Turing Lock")
{
2023-11-14 20:40:45 +00:00
private int RunOperations(int initialA = 0, int initialB = 0)
{
2023-11-25 18:46:47 +00:00
Dictionary<char, int> registers = new()
{
['a'] = initialA,
['b'] = initialB
};
2023-11-14 20:40:45 +00:00
var input = Input.ToList();
for (var i = 0; i < input.Count;)
{
2023-11-25 18:46:47 +00:00
switch (input[i][..3])
2023-11-14 20:40:45 +00:00
{
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();
2023-11-14 20:40:45 +00:00
public override object Part2() => RunOperations(1);
}