Projdeme si inicializaci a kopírování 1D a více-D polí. Spusťte následující kód a na konci si vytiskněte jednotlivá pole. Co pozorujeme?
# Inicializace pole a = [0] * 5 # Jak správně zkopírovat pole? b = a c = a[:] d = list(a) a[3] = 3 b[0] = -5 c[4] = 4
Nyní spusťte následující kód a opět si na konci vypište jednotlivá pole.
# Inicializace 2D pole přímo a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # Inicializace po řádcích f = [] for i in range(3): f.append([i] * 3) # Inicializace po řádcích ve zkráceném zápisu g = [[i] * 3 for i in range(3)] # Jak správně zkopírovat pole? b = a c = a[:] d = list(b) a[1][2] = -1 c[2][1] = -3
Pokud chceme opravdovou kopii vícedimenzionálního pole, tvz. deep copy, můžeme použít modul copy
a funkci deepcopy
. Doplňte import a kopírování do předchozí ukázky a porovnejte výsledky.
import copy d = copy.deepcopy(b)
a = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
[[0]*len(a[0]) for i in a]
import time time.sleep(0.5)
''.join('X' if i!=0 else ' ' for i in x))
m=[[12,-7,3, 26], [4 ,5,-6, -5], [-7 ,8,9, 21]]
mm = [list(map(Fraction, v)) for v in m]
result = [list(map(float, v)) for v in mm]
sys.argv[1]
)
.
, x
a o
které značí postupně prázdné pole, křížek (malé písmeno x) a kolečko (malé písmeno o).
o
vždy začíná, tedy pro určení hráče na tahu platí
x
a o
, pak je na tahu o
x
o jednu méně, než o
, pak hraje x
o . . o o o o x o . x x . x x . o . . x o o x o x o o x x . . x x . .
0 2
o
a x
(12), na tahu je o
o
hru vyhrává, když hraje na první řádek do třetího sloupce, tj. index v poli 0 2
Vstup:
o . o x . o o . o . x x . . x . o o x . . o o . o x . x . . x . . x xNa tahu je hráč
o
, vítězná řada je v diagonále
Výstup: 4 4
Vstup:
x . . o o . . . . . o . x o . o . x . . o x x x o . o x . .Na tahu je hráč
x
, doplnit může řadu ve třetím sloupci
Výstup: 1 2
Vstup:
x x . . . . x o . o . . x o o x o . . o o . o x o . x x o . . x . . x .Výstup:
0 4
Vstup:
. o o . . o . . x o . x x . . . . . o x . . . . o . . . x . . o x o x o . o . x . x x o . o o . . . x o . o x . . x x . x . . oVýstup
3 2
sys.argv[1]
) najde největší souvislou podmatici libovolného rozměru, která obsahuje pouze záporné hodnoty. Příklad volání:
python3 rectangle.py matice.txt
Matice matice.txt:
1 -9 -2 8 6 1 8 -1 -11 -7 6 4 10 12 -1 -9 -12 14 8 10 -3 -5 17 8 6 4 10 -13 -16 19
Výstup:
1 2 3 3
Testovací matice matice.tgz