2015 day 23
continuous-integration/drone Build is passing
Details
continuous-integration/drone Build is passing
Details
This commit is contained in:
parent
5a54ec7bd7
commit
a0d8bc1f07
|
@ -27,6 +27,7 @@ public class Test2015
|
||||||
[DataRow(typeof(Day19), "576", "207")]
|
[DataRow(typeof(Day19), "576", "207")]
|
||||||
[DataRow(typeof(Day20), "665280", "705600")]
|
[DataRow(typeof(Day20), "665280", "705600")]
|
||||||
[DataRow(typeof(Day21), "78", "148")]
|
[DataRow(typeof(Day21), "78", "148")]
|
||||||
|
[DataRow(typeof(Day23), "255", "334")]
|
||||||
public void CheckAllDays(Type dayType, string part1, string part2)
|
public void CheckAllDays(Type dayType, string part1, string part2)
|
||||||
{
|
{
|
||||||
Common.CheckDay(dayType, part1, part2);
|
Common.CheckDay(dayType, part1, part2);
|
||||||
|
|
|
@ -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<char, int> 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);
|
||||||
|
}
|
Loading…
Reference in New Issue