Za prvi del naloge se nam ni potrebno naučiti ničesar novega o
numpy
-ju. Tule je le nekaj nasvetov.
Podatke lahko preberete tako:
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")])
instr
array([[ 1, -20, 26, -36, 17, -47, 7],
[ 1, -20, 33, -21, 23, -26, 28],
[ 1, -22, 28, -29, 23, -38, 16],
[ 1, -46, 7, -6, 46, -50, -1],
[ 1, -49, 1, -3, 46, -24, 28],
[ 1, 2, 47, -22, 22, -23, 27],
[ 1, -27, 23, -28, 26, -21, 29],
[ 1, -39, 5, -6, 47, -3, 44],
[ 1, -30, 21, -8, 43, -13, 34],
[ 1, -22, 26, -27, 20, -29, 19],
[ 0, -48, -32, 26, 41, -47, -37],
[ 1, -12, 35, 6, 50, -50, -2],
[ 0, -48, -32, -32, -16, -15, -5],
[ 1, -18, 26, -33, 15, -7, 46],
[ 0, -40, -22, -38, -28, 23, 41],
[ 1, -16, 35, -41, 10, -47, 6],
[ 0, -32, -23, 11, 30, -14, 3],
[ 1, -49, -5, -3, 45, -29, 18],
[ 0, 18, 30, -20, -8, -3, 13],
[ 1, -41, 9, -7, 43, -33, 15],
[ 1, -54112, -39298, -85059, -49293, -27449, 7877],
[ 1, 967, 23432, 45373, 81175, 27513, 53682]])
Prvi stolpec pove, ali kocko prižigamo ali ugašamo, naslednja dva
povesta meji v smeri x
, naslednja dva v y
,
zadnja dva v z
. Koordinate vključujejo zgornjo mejo: -26 in
7 pomeni od -26 do vključno 7. To ni dobro. Boljše bi bilo, če
bi pisalo od -26 do 8, kar bi pomenilo, da 8 ni vključena. Za prvi del
naloge to ni tako zelo pomembno, v drugem pa bo postalo. Zato povečajte
vsa števila v stolpcih z indeksi 2, 4 in 6 za 1. To naredite z enim
samim prirejanjem. Ker je preprosto.
V prvem delu je potrebno ignorirati vse vrstice, pri katerih meje
niso znotraj intervala -50 do 50 (vključno). Pripravite novo tabelo, v
kateri bodo le takšne vrstice. Brez zank, seveda. To je zato, da
povadite np.min
in np.max
prek osi in logične
operatorje na tabelah in indeksiranje z maskami.
Potem pa preprosto naredite tabelico, katere elementi ustrezajo
kockam v reaktorju. Zapodite zanko for
(ki bo tudi edina
zanka for!) prek te tabele, za vsako vrstico prižgite oz. ugasnite
kocke, na koncu pa jih preštejte.