You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
836 B
35 lines
836 B
import os
|
|
|
|
from .comp import OpcodeComputer
|
|
|
|
inputfile = os.path.join(os.path.dirname(__file__), "input/day13_input")
|
|
|
|
|
|
def test_day13a():
|
|
comp = OpcodeComputer(inputfile).process_op([])
|
|
res = 0
|
|
for _ in comp:
|
|
comp.__next__()
|
|
res += 1 if comp.__next__() == 2 else 0
|
|
assert res == 309
|
|
|
|
|
|
def test_day13b():
|
|
dir = 0
|
|
pipe = iter(lambda: dir, 2)
|
|
comp = OpcodeComputer(inputfile)
|
|
comp.memory[0] = 2
|
|
proc = comp.process_op(pipe)
|
|
score = 0
|
|
padx = 0
|
|
for x in proc:
|
|
y = proc.__next__()
|
|
c = proc.__next__()
|
|
if c == 4:
|
|
dir = -1 if padx > x else 1 if padx < x else 0
|
|
padx += dir
|
|
elif c == 3:
|
|
padx = x
|
|
elif x == -1 and y == 0:
|
|
score = c
|
|
assert score == 15410
|
|
|