-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathp25.py
34 lines (26 loc) · 963 Bytes
/
p25.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from collections import deque
from aocd import data
from intcode import Computer
class Droid(Computer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.queue = deque()
def _op_4(self, *args, **kwargs):
super()._op_4(*args, **kwargs)
print(chr(self.output[-1]), end='')
def execute(self):
while (intcode := self._get_op_code()) != 99:
args = self._get_args(intcode)
op = self._get_op(intcode.op)
if intcode.op == 3:
if not self.queue:
print()
command = input('>')
for char in command:
self.queue.append(ord(char))
self.queue.append(10)
op(args[0], None, None, self.queue.popleft(), modes=intcode.modes)
else:
op(*args, modes=intcode.modes)
droid = Droid(data)
droid.execute()