13 "['.#.#.#', '...##.', '#....#', '..#...', '#.#..#', '####..']"
18 "output_type": "execute_result"
22 "pi18 = \"\"\".#.#.#\n",
28 "\"\"\".splitlines()\n",
47 "output_type": "execute_result"
52 "columns = len(pi18[0])\n",
64 "def read_grid(lines):\n",
66 " for i, r in enumerate(lines):\n",
67 " for j, c in enumerate(r):\n",
69 " grid[i, j] = True\n",
100 "execution_count": 4,
102 "output_type": "execute_result"
106 "g = read_grid(pi18)\n",
112 "execution_count": 5,
118 "def print_grid(grid, rows, columns):\n",
119 " for r in range(rows):\n",
120 " for c in range(columns):\n",
121 " if (r, c) in grid:\n",
122 " print('#', end='')\n",
124 " print('.', end='')\n",
130 "execution_count": 6,
137 "output_type": "stream",
149 "print_grid(g, rows, columns)"
154 "execution_count": 7,
160 "def do_generation(grid, rows, columns):\n",
162 " for r in range(rows):\n",
163 " for c in range(columns):\n",
164 " live_neighbours = sum(1\n",
165 " for dr in [-1, 0, 1]\n",
166 " for dc in [-1, 0, 1]\n",
167 " if not (dr == 0 and dc == 0)\n",
168 " if (r+dr, c+dc) in grid)\n",
169 " if (r, c) in grid:\n",
170 " if live_neighbours in [2, 3]:\n",
171 " new_grid[r, c] = True\n",
173 " if live_neighbours == 3:\n",
174 " new_grid[r, c] = True\n",
180 "execution_count": 8,
187 "output_type": "stream",
199 "print_grid(do_generation(g, 6, 6), 6, 6)"
204 "execution_count": 9,
211 "output_type": "stream",
223 "print_grid(g, 6, 6)"
228 "execution_count": 10,
234 "def many_generations(grid, rows, columns, generations):\n",
235 " for _ in range(generations):\n",
236 " grid = do_generation(grid, rows, columns)\n",
242 "execution_count": 11,
249 "output_type": "stream",
261 "print_grid(many_generations(g, 6, 6, 4), 6, 6)"
266 "execution_count": 12,
277 "execution_count": 12,
279 "output_type": "execute_result"
283 "pi18 = [l.strip() for l in open('advent18.txt').readlines()]\n",
284 "rows = len(pi18)\n",
285 "columns = len(pi18[0])\n",
291 "execution_count": 13,
302 "execution_count": 13,
304 "output_type": "execute_result"
308 "g = read_grid(pi18)\n",
314 "execution_count": 14,
325 "execution_count": 14,
327 "output_type": "execute_result"
331 "g = many_generations(g, rows, columns, 100)\n",
337 "execution_count": 15,
343 "def set_corners_on(grid, rows, columns):\n",
344 " grid[0, 0] = True\n",
345 " grid[0, columns-1] = True\n",
346 " grid[rows-1, 0] = True\n",
347 " grid[rows-1, columns-1] = True\n",
353 "execution_count": 16,
359 "def do_generation_2(grid, rows, columns):\n",
360 " grid = do_generation(grid, rows, columns)\n",
361 " grid = set_corners_on(grid, rows, columns)\n",
367 "execution_count": 17,
373 "def many_generations_2(grid, rows, columns, generations):\n",
374 " for _ in range(generations):\n",
375 " grid = do_generation_2(grid, rows, columns)\n",
381 "execution_count": 18,
388 "output_type": "stream",
400 "pi18 = \"\"\".#.#.#\n",
406 "\"\"\".splitlines()\n",
407 "rows = len(pi18)\n",
408 "columns = len(pi18[0])\n",
409 "g = read_grid(pi18)\n",
410 "g = set_corners_on(g, rows, columns)\n",
411 "print_grid(g, rows, columns)"
416 "execution_count": 19,
423 "output_type": "stream",
435 "g = do_generation_2(g, 6, 6)\n",
436 "print_grid(g, 6, 6)"
441 "execution_count": 20,
448 "output_type": "stream",
460 "g = do_generation_2(g, 6, 6)\n",
461 "print_grid(g, 6, 6)"
466 "execution_count": 21,
473 "output_type": "stream",
485 "pi18 = \"\"\".#.#.#\n",
491 "\"\"\".splitlines()\n",
492 "rows = len(pi18)\n",
493 "columns = len(pi18[0])\n",
494 "g = read_grid(pi18)\n",
495 "g = set_corners_on(g, rows, columns)\n",
496 "print_grid(g, rows, columns)"
501 "execution_count": 22,
508 "output_type": "stream",
520 "print_grid(many_generations_2(g, 6, 6, 5), 6, 6)"
525 "execution_count": 23,
536 "execution_count": 23,
538 "output_type": "execute_result"
542 "pi18 = [l.strip() for l in open('advent18.txt').readlines()]\n",
543 "rows = len(pi18)\n",
544 "columns = len(pi18[0])\n",
550 "execution_count": 24,
561 "execution_count": 24,
563 "output_type": "execute_result"
567 "g = read_grid(pi18)\n",
568 "g = set_corners_on(g, rows, columns)\n",
574 "execution_count": 25,
585 "execution_count": 25,
587 "output_type": "execute_result"
591 "g = many_generations_2(g, rows, columns, 100)\n",
597 "execution_count": null,
607 "display_name": "Python 3",
608 "language": "python",
616 "file_extension": ".py",
617 "mimetype": "text/x-python",
619 "nbconvert_exporter": "python",
620 "pygments_lexer": "ipython3",