day23 - for p2 I'm guessing what number is changing between inputs

This commit is contained in:
Stefan Harmuth 2022-12-04 12:18:54 +01:00
parent 6a8040d4d9
commit a44bd51f68
2 changed files with 101 additions and 0 deletions

69
day23.py Normal file
View File

@ -0,0 +1,69 @@
from collections import defaultdict
from tools.aoc import AOCDay
from typing import Any
from tools.math import get_factors
class Day(AOCDay):
inputs = [
[
(4225, "input23")
],
[
(905, "input23")
]
]
def get_commands(self) -> list:
return [x.split(" ") for x in self.getInput()]
def part1(self) -> Any:
register = defaultdict(int)
index = 0
commands = self.get_commands()
mul_count = 0
while 0 <= index < len(commands):
cmd = commands[index]
try:
value = int(cmd[2])
except ValueError:
value = register[cmd[2]]
match cmd[0]:
case "set":
register[cmd[1]] = value
case "sub":
register[cmd[1]] -= value
case "mul":
mul_count += 1
register[cmd[1]] *= value
case "jnz":
try:
jumper = int(cmd[1])
except ValueError:
jumper = register[cmd[1]]
if jumper != 0:
index += value - 1
index += 1
return mul_count
def part2(self) -> Any:
b = int(self.getInput()[0].split(" ")[2]) * 100 + 100000
c = b + 17000
h = 0
while b <= c:
if len(get_factors(b)) > 2:
h += 1
b += 17
return h
if __name__ == '__main__':
day = Day(2017, 23)
day.run(verbose=True)

32
inputs/input23 Normal file
View File

@ -0,0 +1,32 @@
set b 67
set c b
jnz a 2
jnz 1 5
mul b 100
sub b -100000
set c b
sub c -17000
set f 1
set d 2
set e 2
set g d
mul g e
sub g b
jnz g 2
set f 0
sub e -1
set g e
sub g b
jnz g -8
sub d -1
set g d
sub g b
jnz g -13
jnz f 2
sub h -1
set g b
sub g c
jnz g 2
jnz 1 3
sub b -17
jnz 1 -23