#game of life def grid(): #vytiskne celou síť for row in skupina: print row def test_preziti(): for index_radek, radek in enumerate(skupina): #test krajností if index_radek==0: #radek nema souseda nahore=1.radek for index_element, element in enumerate(radek): #test krajnosti if index_element==0: #prvek nema souseda vlevo ani nahore #test přežití if skupina[index_radek][index_element+1]==0 or skupina[index_radek+1][index_element]==0: #je-li prvek vpravo nebo dole nula, je smrt skupina[index_radek][index_element]=0 #neprezil elif skupina[index_radek][index_element+1]==1 and skupina[index_radek+1][index_element]==1: #prvek vpravo a dole je jedna, prezil skupina[index_radek][index_element]=1 #prezil elif index_element==3: #prvek nema souseda vpravo ani nahore if skupina[index_radek][index_element-1]==0 or skupina[index_radek+1][index_element]==0: skupina[index_radek][index_element]=0 #neprezil elif skupina[index_radek][index_element-1]==1 and skupina[index_radek+1][index_element]==1: skupina[index_radek][index_element]=1 #prezil else: #prvek ma souseda vlevo, vpravo a dole if skupina[index_radek][index_element-1]==0 or skupina[index_radek][index_element+1]==0 or skupina[index_radek+1][index_element]==0: skupina[index_radek][index_element]=0 #neprezil elif skupina[index_radek][index_element-1]==1 and skupina[index_radek][index_element+1]==1 and skupina[index_radek+1][index_element]==1: skupina[index_radek][index_element]=1 #prezil elif index_radek==3: #radek nema souseda dole = posledni radek for index_element, element in enumerate(radek): #test krajnosti if index_element==0: #prvek nema souseda vlevo ani dole #test přežití if skupina[index_radek][index_element+1]==0 or skupina[index_radek-1][index_element]==0: #je-li prvek vpravo nebo nahoře nula, je smrt skupina[index_radek][index_element]=0 #neprezil print "výsledek: \n", grid() elif skupina[index_radek][index_element+1]==1 and skupina[index_radek-1][index_element]==1: #prvek vpravo a nahoře je jedna, prezil skupina[index_radek][index_element]=1 #prezil print "výsledek: \n", grid() elif index_element==3: #prvek nema souseda vpravo ani dole if skupina[index_radek][index_element-1]==0 or skupina[index_radek-1][index_element]==0: skupina[index_radek][index_element]=0 #neprezil print "výsledek: \n", grid() elif skupina[index_radek][index_element-1]==1 and skupina[index_radek-1][index_element]==1: skupina[index_radek][index_element]=1 #prezil print "výsledek: \n", grid() else: #prvek ma souseda vlevo, vpravo a nahore if skupina[index_radek][index_element-1]==0 or skupina[index_radek][index_element+1]==0 or skupina[index_radek-1][index_element]==0: skupina[index_radek][index_element]=0 #neprezil print "výsledek: \n", grid() elif skupina[index_radek][index_element-1]==1 and skupina[index_radek][index_element+1]==1 and skupina[index_radek-1][index_element]==1: skupina[index_radek][index_element]=1 #prezil print "výsledek: \n", grid() else: #radek ma vsechny sousedy for index_element, element in enumerate(radek): #test krajnosti if index_element==0: #prvek nema souseda vlevo #test přežití if skupina[index_radek][index_element+1]==0 or skupina[index_radek+1][index_element]==0 or skupina[index_radek-1][index_element]==0: #je-li prvek vpravo nebo vlevo nebo dole nula, je smrt skupina[index_radek][index_element]=0 #neprezil elif skupina[index_radek][index_element+1]==1 and skupina[index_radek+1][index_element]==1 and skupina[index_radek-1][index_element]==1: #prvek vpravo, vlevo a dole je jedna, prezil skupina[index_radek][index_element]=1 #prezil elif index_element==3: #prvek nema souseda vpravo if skupina[index_radek][index_element-1]==0 or skupina[index_radek+1][index_element]==0 or skupina[index_radek-1][index_element]==0: skupina[index_radek][index_element]=0 #neprezil elif skupina[index_radek][index_element-1]==1 and skupina[index_radek+1][index_element]==1 and skupina[index_radek-1][index_element]==1: skupina[index_radek][index_element]=1 #prezil else: #prvek ma souseda vlevo, vpravo a dole if skupina[index_radek][index_element-1]==0 or skupina[index_radek][index_element+1]==0 or skupina[index_radek+1][index_element]==0 or skupina[index_radek-1][index_element]==0: skupina[index_radek][index_element]=0 #neprezil elif skupina[index_radek][index_element-1]==1 and skupina[index_radek][index_element+1]==1 and skupina[index_radek+1][index_element]== 1and skupina[index_radek-1][index_element]==1: skupina[index_radek][index_element]=1 #prezil #grid skupina = [[1,1,1,1], [1,1,0,1], [1,1,1,1], [1,1,1,1]] iterace=1 pocet_cyklu=4 print "startovní schéma \n", grid() while iterace <= pocet_cyklu: print "probíhá iterace: ", iterace, " z celkového počtu ", pocet_cyklu," cyklů." test_preziti() iterace+=1 print "Celkový výsledek: \n", grid()
Standard input is empty
startovní schéma [1, 1, 1, 1] [1, 1, 0, 1] [1, 1, 1, 1] [1, 1, 1, 1] None probíhá iterace: 1 z celkového počtu 4 cyklů. výsledek: [1, 1, 0, 0] [1, 0, 0, 0] [1, 0, 0, 0] [1, 1, 1, 1] None výsledek: [1, 1, 0, 0] [1, 0, 0, 0] [1, 0, 0, 0] [1, 0, 1, 1] None výsledek: [1, 1, 0, 0] [1, 0, 0, 0] [1, 0, 0, 0] [1, 0, 0, 1] None výsledek: [1, 1, 0, 0] [1, 0, 0, 0] [1, 0, 0, 0] [1, 0, 0, 0] None probíhá iterace: 2 z celkového počtu 4 cyklů. výsledek: [1, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [1, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [1, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [1, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None probíhá iterace: 3 z celkového počtu 4 cyklů. výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None probíhá iterace: 4 z celkového počtu 4 cyklů. výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None Celkový výsledek: [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0] None