Conway's Game of Life
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. from conway import GameOfLife
  2. def test_getting_neighbors():
  3. grid = [
  4. [0, 0, 0, 0, 0],
  5. [0, 0, 1, 0, 0],
  6. [0, 0, 1, 0, 0],
  7. [0, 0, 1, 0, 0],
  8. [0, 0, 0, 0, 0],
  9. ]
  10. game = GameOfLife(grid=grid)
  11. assert game.get_neighbors(0, 1) == [0, 0, 0, 0, 1]
  12. assert game.get_neighbors(1, 1) == [0, 0, 0, 0, 1, 0, 0, 1]
  13. assert game.get_neighbors(2, 1) == [0, 0, 1, 0, 1, 0, 0, 1]
  14. def test_dead_cell_with_three_living_neighbors_comes_back_to_life():
  15. grid = [
  16. [1, 1, 1, 0, 0],
  17. [0, 0, 0, 0, 0],
  18. [0, 0, 0, 0, 0],
  19. [0, 0, 0, 0, 0],
  20. [0, 0, 0, 0, 0],
  21. ]
  22. game = GameOfLife(grid=grid)
  23. game.iterate()
  24. assert game.grid[1][1] == 1
  25. def test_dead_cells_with_three_living_neighbors_come_back_to_life():
  26. grid = [
  27. [0, 0, 0, 0, 0],
  28. [0, 0, 0, 0, 0],
  29. [0, 1, 1, 1, 0],
  30. [0, 0, 0, 0, 0],
  31. [0, 0, 0, 0, 0],
  32. ]
  33. game = GameOfLife(grid=grid)
  34. game.iterate()
  35. assert game.grid[1][2] == 1
  36. assert game.grid[3][2] == 1
  37. def test_living_cell_with_under_two_living_neighbors_dies():
  38. grid = [
  39. [0, 0, 0, 0, 0],
  40. [0, 0, 0, 0, 0],
  41. [0, 0, 1, 0, 0],
  42. [0, 0, 0, 0, 0],
  43. [0, 0, 0, 0, 0],
  44. ]
  45. game = GameOfLife(grid=grid)
  46. game.iterate()
  47. assert game.grid[1][2] == 0
  48. assert game.grid[2][2] == 0
  49. def test_living_cell_with_two_or_three_neighbors_survives():
  50. grid = [
  51. [0, 0, 0, 0, 0],
  52. [0, 0, 1, 0, 0],
  53. [0, 0, 1, 0, 0],
  54. [0, 0, 1, 0, 0],
  55. [0, 0, 0, 0, 0],
  56. ]
  57. game = GameOfLife(grid=grid)
  58. game.iterate()
  59. assert game.grid[2][2] == 1
  60. def test_blinker():
  61. grid = [
  62. [0, 0, 0, 0, 0],
  63. [0, 0, 1, 0, 0],
  64. [0, 0, 1, 0, 0],
  65. [0, 0, 1, 0, 0],
  66. [0, 0, 0, 0, 0],
  67. ]
  68. game = GameOfLife(grid=grid)
  69. game.iterate()
  70. assert game.grid == [
  71. [0, 0, 0, 0, 0],
  72. [0, 0, 0, 0, 0],
  73. [0, 1, 1, 1, 0],
  74. [0, 0, 0, 0, 0],
  75. [0, 0, 0, 0, 0],
  76. ]
  77. game.iterate()
  78. assert game.grid == grid
  79. def test_beacon():
  80. grid = [
  81. [0, 0, 0, 0, 0, 0],
  82. [0, 1, 1, 0, 0, 0],
  83. [0, 1, 0, 0, 0, 0],
  84. [0, 0, 0, 0, 1, 0],
  85. [0, 0, 0, 1, 1, 0],
  86. [0, 0, 0, 0, 0, 0],
  87. ]
  88. game = GameOfLife(grid=grid)
  89. game.iterate()
  90. assert game.grid == [
  91. [0, 0, 0, 0, 0, 0],
  92. [0, 1, 1, 0, 0, 0],
  93. [0, 1, 1, 0, 0, 0],
  94. [0, 0, 0, 1, 1, 0],
  95. [0, 0, 0, 1, 1, 0],
  96. [0, 0, 0, 0, 0, 0],
  97. ]
  98. game.iterate()
  99. assert game.grid == grid
  100. def test_creating_grid_from_string():
  101. s = '''
  102. 00000
  103. 00000
  104. 01110
  105. 00000
  106. 00000
  107. '''
  108. game = GameOfLife.from_string(s)
  109. assert game.grid == [
  110. [0, 0, 0, 0, 0],
  111. [0, 0, 0, 0, 0],
  112. [0, 1, 1, 1, 0],
  113. [0, 0, 0, 0, 0],
  114. [0, 0, 0, 0, 0],
  115. ]