Imamo torej
import numpy as np
import re
= np.array([[line.startswith("on")] +
instr int(x) for x in re.findall("-?\d+", line)]
[for line in open("example.txt")])
Popravimo zgornje meje:
2, 4, 6]] += 1 instr[:, [
Izberimo vrstice, pri katerih minimum ni manjši od -50 in maksimum ni večji od 50; ker smo meje povečali za 1, smemo dopustiti tudi 51.
= instr[(np.min(instr, axis=1) >= -50) & (np.max(instr, axis=1) <= 51)] instr50
Tudi ostanek je podobno trivialen.
= np.zeros((101, 101, 101), dtype=bool)
reactor for on, x0, x1, y0, y1, z0, z1 in instr:
+ 50:x1 + 50, y0 + 50:y1 + 50, z0 + 50:z1 + 50] = on
reactor[x0 print(np.sum(reactor))
590784