## 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