fork download
  1. #game of life
  2. def grid():
  3. #vytiskne celou síť
  4. for row in skupina:
  5. print row
  6.  
  7. def test_preziti():
  8. for index_radek, radek in enumerate(skupina):
  9. #test krajností
  10. if index_radek==0: #radek nema souseda nahore=1.radek
  11. for index_element, element in enumerate(radek):
  12. #test krajnosti
  13. if index_element==0: #prvek nema souseda vlevo ani nahore
  14. #test přežití
  15. 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
  16. skupina[index_radek][index_element]=0 #neprezil
  17. elif skupina[index_radek][index_element+1]==1 and skupina[index_radek+1][index_element]==1: #prvek vpravo a dole je jedna, prezil
  18. skupina[index_radek][index_element]=1 #prezil
  19.  
  20. elif index_element==3: #prvek nema souseda vpravo ani nahore
  21. if skupina[index_radek][index_element-1]==0 or skupina[index_radek+1][index_element]==0:
  22. skupina[index_radek][index_element]=0 #neprezil
  23. elif skupina[index_radek][index_element-1]==1 and skupina[index_radek+1][index_element]==1:
  24. skupina[index_radek][index_element]=1 #prezil
  25.  
  26. else: #prvek ma souseda vlevo, vpravo a dole
  27. if skupina[index_radek][index_element-1]==0 or skupina[index_radek][index_element+1]==0 or skupina[index_radek+1][index_element]==0:
  28. skupina[index_radek][index_element]=0 #neprezil
  29. elif skupina[index_radek][index_element-1]==1 and skupina[index_radek][index_element+1]==1 and skupina[index_radek+1][index_element]==1:
  30. skupina[index_radek][index_element]=1 #prezil
  31.  
  32. elif index_radek==3: #radek nema souseda dole = posledni radek
  33. for index_element, element in enumerate(radek):
  34. #test krajnosti
  35. if index_element==0: #prvek nema souseda vlevo ani dole
  36. #test přežití
  37. 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
  38. skupina[index_radek][index_element]=0 #neprezil
  39. print "výsledek: \n", grid()
  40. elif skupina[index_radek][index_element+1]==1 and skupina[index_radek-1][index_element]==1: #prvek vpravo a nahoře je jedna, prezil
  41. skupina[index_radek][index_element]=1 #prezil
  42. print "výsledek: \n", grid()
  43.  
  44. elif index_element==3: #prvek nema souseda vpravo ani dole
  45. if skupina[index_radek][index_element-1]==0 or skupina[index_radek-1][index_element]==0:
  46. skupina[index_radek][index_element]=0 #neprezil
  47. print "výsledek: \n", grid()
  48. elif skupina[index_radek][index_element-1]==1 and skupina[index_radek-1][index_element]==1:
  49. skupina[index_radek][index_element]=1 #prezil
  50. print "výsledek: \n", grid()
  51.  
  52. else: #prvek ma souseda vlevo, vpravo a nahore
  53. if skupina[index_radek][index_element-1]==0 or skupina[index_radek][index_element+1]==0 or skupina[index_radek-1][index_element]==0:
  54. skupina[index_radek][index_element]=0 #neprezil
  55. print "výsledek: \n", grid()
  56. elif skupina[index_radek][index_element-1]==1 and skupina[index_radek][index_element+1]==1 and skupina[index_radek-1][index_element]==1:
  57. skupina[index_radek][index_element]=1 #prezil
  58. print "výsledek: \n", grid()
  59.  
  60. else: #radek ma vsechny sousedy
  61. for index_element, element in enumerate(radek):
  62. #test krajnosti
  63. if index_element==0: #prvek nema souseda vlevo
  64. #test přežití
  65. 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
  66. skupina[index_radek][index_element]=0 #neprezil
  67. 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
  68. skupina[index_radek][index_element]=1 #prezil
  69.  
  70. elif index_element==3: #prvek nema souseda vpravo
  71. if skupina[index_radek][index_element-1]==0 or skupina[index_radek+1][index_element]==0 or skupina[index_radek-1][index_element]==0:
  72. skupina[index_radek][index_element]=0 #neprezil
  73. elif skupina[index_radek][index_element-1]==1 and skupina[index_radek+1][index_element]==1 and skupina[index_radek-1][index_element]==1:
  74. skupina[index_radek][index_element]=1 #prezil
  75.  
  76. else: #prvek ma souseda vlevo, vpravo a dole
  77. 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:
  78. skupina[index_radek][index_element]=0 #neprezil
  79. 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:
  80. skupina[index_radek][index_element]=1 #prezil
  81.  
  82.  
  83. #grid
  84. skupina = [[1,1,1,1], [1,1,0,1], [1,1,1,1], [1,1,1,1]]
  85.  
  86. iterace=1
  87. pocet_cyklu=4
  88.  
  89. print "startovní schéma \n", grid()
  90.  
  91.  
  92. while iterace <= pocet_cyklu:
  93. print "probíhá iterace: ", iterace, " z celkového počtu ", pocet_cyklu," cyklů."
  94. test_preziti()
  95. iterace+=1
  96.  
  97. print "Celkový výsledek: \n", grid()
Success #stdin #stdout 0s 23352KB
stdin
Standard input is empty
stdout
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