@@ -127,9 +127,33 @@ def next_state(self, neighbor_count):
127
127
return Dead ()
128
128
129
129
130
- def glider_example ():
131
- from textwrap import dedent
130
+ from textwrap import dedent
131
+
132
+ def run_string_example (
133
+ * ,
134
+ seed_string = None ,
135
+ seed_name = None ,
136
+ num_gens = 10
137
+ ):
138
+ seed_game = GameOfLife .from_str (seed_string )
139
+ if seed_name is None :
140
+ seed_name = f'A { seed_game .height } x{ seed_game .width } grid'
141
+ print (dedent (f'''
142
+ =========================
143
+ | Conway's Game of Life |
144
+ { '' :=^50}
145
+ | { f'Starting with seed: "{ seed_name :.10} "' : <46.46} |
146
+ | { f'Running for { str (num_gens ):1.3} generations.' : <46.46} |
147
+ { '' :=^50}
148
+ ''' ))
149
+ latest_generation = seed_game
150
+ for gen_num in range (1 , num_gens + 1 ):
151
+ print (f'Generation { gen_num } :' )
152
+ print (str (latest_generation ))
153
+ latest_generation = latest_generation .next_generation ()
154
+ print ('Done' )
132
155
156
+ def glider_example ():
133
157
glider_string = dedent ('''
134
158
··0····
135
159
0·0····
@@ -138,20 +162,24 @@ def glider_example():
138
162
·······
139
163
·······
140
164
''' )
165
+ run_string_example (
166
+ seed_string = glider_string ,
167
+ seed_name = 'Glider' ,
168
+ num_gens = 15
169
+ )
141
170
142
- glider_game = GameOfLife .from_str (glider_string )
143
- num_gens = 15
144
- print (dedent (f'''
145
- Conway's Game of Life
146
- Starting with seed: "Glider"
147
- Running for { num_gens } generations.
148
- ''' ))
149
- for gen_num in range (1 , num_gens + 1
150
- ):
151
- print (f'Generation { gen_num } :' )
152
- print (str (glider_game ))
153
- glider_game = glider_game .next_generation ()
154
- print ('Done' )
171
+ def question_example ():
172
+ from textwrap import dedent
173
+
174
+ game_string = dedent ('''
175
+ ·0·
176
+ 0·0
177
+ ''' )
178
+ run_string_example (
179
+ seed_string = game_string ,
180
+ num_gens = 4
181
+ )
155
182
156
183
if __name__ == '__main__' :
157
184
glider_example ()
185
+ question_example ()
0 commit comments