Rešitev

Imamo torej

import numpy as np
import re

instr = np.array([[line.startswith("on")] +
                  [int(x) for x in re.findall("-?\d+", line)]
                  for line in open("example.txt")])

Popravimo zgornje meje:

instr[:, [2, 4, 6]] += 1

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.

instr50 = instr[(np.min(instr, axis=1) >= -50) & (np.max(instr, axis=1) <= 51)]

Tudi ostanek je podobno trivialen.

reactor = np.zeros((101, 101, 101), dtype=bool)
for on, x0, x1, y0, y1, z0, z1 in instr:
    reactor[x0 + 50:x1 + 50, y0 + 50:y1 + 50, z0 + 50:z1 + 50] = on
print(np.sum(reactor))
590784