42 lines
815 B
Python
42 lines
815 B
Python
from lib import get_data, str_to_ints
|
|
import d16
|
|
|
|
|
|
def part_1(data):
|
|
ip = None
|
|
regs = [0 for _ in range(6)]
|
|
|
|
regs[0] = 1 # part 2
|
|
|
|
insts = []
|
|
for line in data.splitlines():
|
|
if line.startswith("#"):
|
|
ip, = str_to_ints(line)
|
|
else:
|
|
fs = line.split()
|
|
vals = str_to_ints(line)
|
|
insts.append([fs[0]] + vals)
|
|
|
|
assert ip is not None
|
|
while regs[ip] < len(insts):
|
|
inst = insts[regs[ip]]
|
|
f = getattr(d16, inst[0])
|
|
# if inst[1:] == [3, 1, 3]:
|
|
# regs[3] = regs[1]
|
|
# regs[4] = regs[1]
|
|
f(regs, *inst[1:])
|
|
regs[ip] += 1
|
|
print(regs, regs[-1] + 1)
|
|
print(regs[0])
|
|
|
|
|
|
|
|
|
|
def main():
|
|
data = get_data(__file__)
|
|
part_1(data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|