Created
June 7, 2019 15:31
-
-
Save nicktimko/b55fd014fe665a58675e978f3d88b022 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "sboard = \"\"\"\n", | |
| "53.|.7.|...\n", | |
| "6..|195|...\n", | |
| ".98|...|.6.\n", | |
| "-----------\n", | |
| "8..|.6.|..3\n", | |
| "4..|8.3|..1\n", | |
| "7..|.2.|..6\n", | |
| "-----------\n", | |
| ".6.|...|28.\n", | |
| "...|419|..5\n", | |
| "...|.8.|.79\n", | |
| "\"\"\"\n", | |
| "\n", | |
| "board = []\n", | |
| "for line in sboard.splitlines():\n", | |
| " if not line.strip():\n", | |
| " continue\n", | |
| " if \"---\" in line:\n", | |
| " continue\n", | |
| " board.append(list(c for c in line if c != '|'))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[['5', '3', '.', '.', '7', '.', '.', '.', '.'],\n", | |
| " ['6', '.', '.', '1', '9', '5', '.', '.', '.'],\n", | |
| " ['.', '9', '8', '.', '.', '.', '.', '6', '.'],\n", | |
| " ['8', '.', '.', '.', '6', '.', '.', '.', '3'],\n", | |
| " ['4', '.', '.', '8', '.', '3', '.', '.', '1'],\n", | |
| " ['7', '.', '.', '.', '2', '.', '.', '.', '6'],\n", | |
| " ['.', '6', '.', '.', '.', '.', '2', '8', '.'],\n", | |
| " ['.', '.', '.', '4', '1', '9', '.', '.', '5'],\n", | |
| " ['.', '.', '.', '.', '8', '.', '.', '7', '9']]" | |
| ] | |
| }, | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "board" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def lr(*args):\n", | |
| " return list(range(*args))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# elements = [0 for _ in range(9 * 9)]\n", | |
| "boxes = [lr(0, 3) + lr(9, 12) + lr(18, 21) for x in range(9)]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[[0, 1, 2, 3, 4, 5, 6, 7, 8],\n", | |
| " [9, 10, 11, 12, 13, 14, 15, 16, 17],\n", | |
| " [18, 19, 20, 21, 22, 23, 24, 25, 26],\n", | |
| " [27, 28, 29, 30, 31, 32, 33, 34, 35],\n", | |
| " [36, 37, 38, 39, 40, 41, 42, 43, 44],\n", | |
| " [45, 46, 47, 48, 49, 50, 51, 52, 53],\n", | |
| " [54, 55, 56, 57, 58, 59, 60, 61, 62],\n", | |
| " [63, 64, 65, 66, 67, 68, 69, 70, 71],\n", | |
| " [72, 73, 74, 75, 76, 77, 78, 79, 80]]" | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "rows = [list(range(9*x, 9*x+9)) for x in range(9)]\n", | |
| "rows" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[[0, 9, 18, 27, 36, 45, 54, 63, 72],\n", | |
| " [1, 10, 19, 28, 37, 46, 55, 64, 73],\n", | |
| " [2, 11, 20, 29, 38, 47, 56, 65, 74],\n", | |
| " [3, 12, 21, 30, 39, 48, 57, 66, 75],\n", | |
| " [4, 13, 22, 31, 40, 49, 58, 67, 76],\n", | |
| " [5, 14, 23, 32, 41, 50, 59, 68, 77],\n", | |
| " [6, 15, 24, 33, 42, 51, 60, 69, 78],\n", | |
| " [7, 16, 25, 34, 43, 52, 61, 70, 79],\n", | |
| " [8, 17, 26, 35, 44, 53, 62, 71, 80]]" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "cols = [list(range(x, 81, 9)) for x in range(9)]\n", | |
| "cols" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "vbg = [set().union(*[rows[i] for i in range(3*j, 3*j+3)]) for j in range(3)]\n", | |
| "hbg = [set().union(*[cols[i] for i in range(3*j, 3*j+3)]) for j in range(3)]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "boxes = [sorted(vbg[i] & hbg[j])\n", | |
| " for i in range(3) \n", | |
| " for j in range(3)]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[[0, 1, 2, 9, 10, 11, 18, 19, 20],\n", | |
| " [3, 4, 5, 12, 13, 14, 21, 22, 23],\n", | |
| " [6, 7, 8, 15, 16, 17, 24, 25, 26],\n", | |
| " [27, 28, 29, 36, 37, 38, 45, 46, 47],\n", | |
| " [30, 31, 32, 39, 40, 41, 48, 49, 50],\n", | |
| " [33, 34, 35, 42, 43, 44, 51, 52, 53],\n", | |
| " [54, 55, 56, 63, 64, 65, 72, 73, 74],\n", | |
| " [57, 58, 59, 66, 67, 68, 75, 76, 77],\n", | |
| " [60, 61, 62, 69, 70, 71, 78, 79, 80]]" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "boxes" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>-</td><td>-</td><td><b>7</b></td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td><b>6</b></td><td>-</td><td>-</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>-</td><td>-</td><td>-</td></tr><tr><td>-</td><td><b>9</b></td><td><b>8</b></td><td>-</td><td>-</td><td>-</td><td>-</td><td><b>6</b></td><td>-</td></tr><tr><td><b>8</b></td><td>-</td><td>-</td><td>-</td><td><b>6</b></td><td>-</td><td>-</td><td>-</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>-</td><td>-</td><td><b>8</b></td><td>-</td><td><b>3</b></td><td>-</td><td>-</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>-</td><td>-</td><td>-</td><td><b>2</b></td><td>-</td><td>-</td><td>-</td><td><b>6</b></td></tr><tr><td>-</td><td><b>6</b></td><td>-</td><td>-</td><td>-</td><td>-</td><td><b>2</b></td><td><b>8</b></td><td>-</td></tr><tr><td>-</td><td>-</td><td>-</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>-</td><td>-</td><td><b>5</b></td></tr><tr><td>-</td><td>-</td><td>-</td><td>-</td><td><b>8</b></td><td>-</td><td>-</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " <3>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <2>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <5>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "givens = [int(c) if c != '.' else 0 for c in sboard if c in '123456789.']\n", | |
| "len(givens)\n", | |
| "\n", | |
| "class Cell(object):\n", | |
| " def __init__(self, grid, index, given: int = 0):\n", | |
| " self.given = bool(given) # hard truth\n", | |
| " self.solution = given # (possible) solution\n", | |
| " self.grid = grid\n", | |
| " self.index = index\n", | |
| " self.candidates = []\n", | |
| " \n", | |
| " self.constraints = [c for c in self.grid.constraints if index in c]\n", | |
| "# self.constraints = \n", | |
| " \n", | |
| " def __repr__(self) -> str:\n", | |
| "# return f\"<{self.__class__.__name__} given={self.given} solution={self.solution}>\"\n", | |
| " if self.given:\n", | |
| " return f\"<{self.solution}>\"\n", | |
| " return f\" {self.solution} \"\n", | |
| " \n", | |
| " def compute_candidates(self):\n", | |
| " if self.solution:\n", | |
| " self.candidates = {self.solution}\n", | |
| " return\n", | |
| " \n", | |
| " candidates = set(range(1, 10))\n", | |
| " for const_set in self.constraints: # row/col/box\n", | |
| " for const in const_set:\n", | |
| " target_cell = self.grid[const]\n", | |
| " candidates.discard(target_cell.solution) # if empty, try to drop 0 (do nothing)\n", | |
| " self.candidates = candidates\n", | |
| "# for n in self.grid\n", | |
| "# def this_box(self):\n", | |
| "# return []\n", | |
| "\n", | |
| "class Grid(list):\n", | |
| " \n", | |
| " rows = [list(range(9*x, 9*x+9)) for x in range(9)]\n", | |
| " cols = [list(range(x, 81, 9)) for x in range(9)]\n", | |
| " vbg = [set().union(*[rows[i] for i in range(3*j, 3*j+3)]) for j in range(3)]\n", | |
| " hbg = [set().union(*[cols[i] for i in range(3*j, 3*j+3)]) for j in range(3)]\n", | |
| " boxes = [sorted(vbg[i] & hbg[j])\n", | |
| " for i in range(3) \n", | |
| " for j in range(3)]\n", | |
| " \n", | |
| " constraints = rows + cols + boxes\n", | |
| "\n", | |
| " @classmethod\n", | |
| " def from_asciiboard(cls, asciiboard):\n", | |
| " givens = [int(c) if c != '.' else 0 for c in sboard if c in '123456789.']\n", | |
| " self = cls()\n", | |
| " for n, g in enumerate(givens):\n", | |
| " self.append(Cell(self, n, g))\n", | |
| " return self\n", | |
| " \n", | |
| " def fill_candidates(self):\n", | |
| " for cell in self:\n", | |
| " cell.compute_candidates()\n", | |
| " \n", | |
| " def show(self):\n", | |
| " showrows = []\n", | |
| " i = iter(self)\n", | |
| " for r in range(9):\n", | |
| " showrows.append(\"\".join(str(next(i)) for _ in range(9)))\n", | |
| " if r in (2, 5):\n", | |
| " showrows.append(\"-\" * 27)\n", | |
| " print(\"\\n\".join(showrows))\n", | |
| " \n", | |
| " def _repr_html_(self):\n", | |
| " showrows = []\n", | |
| " i = ((c.solution if c.solution else \"-\") if not c.given else f\"<b>{c.solution}</b>\" for c in self)\n", | |
| " for r in range(9):\n", | |
| " showrows.append(\"\".join(f\"<td>{next(i)}</td>\" for _ in range(9)))\n", | |
| " return f\"<table>{''.join(f'<tr>{r}</tr>' for r in showrows)}</table>\"\n", | |
| " \n", | |
| "# elements = Grid([Cell(g) for g in givens])\n", | |
| "grid = Grid.from_asciiboard(givens)\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def fill_forced():\n", | |
| " grid.fill_candidates()\n", | |
| "\n", | |
| " immediate_solutions = []\n", | |
| " for cell in grid:\n", | |
| " assert len(cell.candidates) > 0\n", | |
| " if len(cell.candidates) == 1 and not cell.solution:\n", | |
| " immediate_solutions.append(cell)\n", | |
| "\n", | |
| " for x in immediate_solutions:\n", | |
| " solution = next(iter(x.candidates))\n", | |
| " yield x.index, solution\n", | |
| " grid[x.index].solution = solution" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{23: 2, 38: 6, 42: 7, 54: 9, 64: 8, 72: 3}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>-</td><td>-</td><td><b>7</b></td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td><b>6</b></td><td>-</td><td>-</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>-</td><td>-</td><td>-</td></tr><tr><td>1</td><td><b>9</b></td><td><b>8</b></td><td>-</td><td>4</td><td>2</td><td>-</td><td><b>6</b></td><td>-</td></tr><tr><td><b>8</b></td><td>-</td><td>-</td><td>7</td><td><b>6</b></td><td>-</td><td>-</td><td>-</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>2</td><td>6</td><td><b>8</b></td><td>5</td><td><b>3</b></td><td>7</td><td>9</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>-</td><td>-</td><td>9</td><td><b>2</b></td><td>-</td><td>-</td><td>-</td><td><b>6</b></td></tr><tr><td>9</td><td><b>6</b></td><td>-</td><td>5</td><td>3</td><td>7</td><td><b>2</b></td><td><b>8</b></td><td>4</td></tr><tr><td>2</td><td>8</td><td>7</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>6</td><td>3</td><td><b>5</b></td></tr><tr><td>3</td><td>-</td><td>-</td><td>-</td><td><b>8</b></td><td>-</td><td>1</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 1 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 7 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 2 ,\n", | |
| " 6 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " <3>,\n", | |
| " 7 ,\n", | |
| " 9 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 9 ,\n", | |
| " <2>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 9 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 5 ,\n", | |
| " 3 ,\n", | |
| " 7 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 8 ,\n", | |
| " 7 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 6 ,\n", | |
| " 3 ,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 1 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "print(dict(fill_forced()))\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{3: 6, 21: 3, 26: 7, 56: 1, 77: 6}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>-</td><td>6</td><td><b>7</b></td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr><td><b>6</b></td><td>-</td><td>-</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>-</td><td>-</td><td>-</td></tr><tr><td>1</td><td><b>9</b></td><td><b>8</b></td><td>3</td><td>4</td><td>2</td><td>-</td><td><b>6</b></td><td>7</td></tr><tr><td><b>8</b></td><td>-</td><td>-</td><td>7</td><td><b>6</b></td><td>-</td><td>-</td><td>-</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>2</td><td>6</td><td><b>8</b></td><td>5</td><td><b>3</b></td><td>7</td><td>9</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>-</td><td>-</td><td>9</td><td><b>2</b></td><td>-</td><td>-</td><td>-</td><td><b>6</b></td></tr><tr><td>9</td><td><b>6</b></td><td>1</td><td>5</td><td>3</td><td>7</td><td><b>2</b></td><td><b>8</b></td><td>4</td></tr><tr><td>2</td><td>8</td><td>7</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>6</td><td>3</td><td><b>5</b></td></tr><tr><td>3</td><td>-</td><td>-</td><td>-</td><td><b>8</b></td><td>6</td><td>1</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 0 ,\n", | |
| " 6 ,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 1 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 7 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 2 ,\n", | |
| " 6 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " <3>,\n", | |
| " 7 ,\n", | |
| " 9 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 9 ,\n", | |
| " <2>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 9 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 5 ,\n", | |
| " 3 ,\n", | |
| " 7 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 8 ,\n", | |
| " 7 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 6 ,\n", | |
| " 3 ,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <8>,\n", | |
| " 6 ,\n", | |
| " 1 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "print(dict(fill_forced()))\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{5: 8, 24: 5, 75: 2}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>-</td><td>6</td><td><b>7</b></td><td>8</td><td>-</td><td>-</td><td>-</td></tr><tr><td><b>6</b></td><td>-</td><td>-</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>-</td><td>-</td><td>-</td></tr><tr><td>1</td><td><b>9</b></td><td><b>8</b></td><td>3</td><td>4</td><td>2</td><td>5</td><td><b>6</b></td><td>7</td></tr><tr><td><b>8</b></td><td>-</td><td>-</td><td>7</td><td><b>6</b></td><td>-</td><td>-</td><td>-</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>2</td><td>6</td><td><b>8</b></td><td>5</td><td><b>3</b></td><td>7</td><td>9</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>-</td><td>-</td><td>9</td><td><b>2</b></td><td>-</td><td>-</td><td>-</td><td><b>6</b></td></tr><tr><td>9</td><td><b>6</b></td><td>1</td><td>5</td><td>3</td><td>7</td><td><b>2</b></td><td><b>8</b></td><td>4</td></tr><tr><td>2</td><td>8</td><td>7</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>6</td><td>3</td><td><b>5</b></td></tr><tr><td>3</td><td>-</td><td>-</td><td>2</td><td><b>8</b></td><td>6</td><td>1</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 0 ,\n", | |
| " 6 ,\n", | |
| " <7>,\n", | |
| " 8 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 1 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 7 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 2 ,\n", | |
| " 6 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " <3>,\n", | |
| " 7 ,\n", | |
| " 9 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 9 ,\n", | |
| " <2>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 9 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 5 ,\n", | |
| " 3 ,\n", | |
| " 7 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 8 ,\n", | |
| " 7 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 6 ,\n", | |
| " 3 ,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 2 ,\n", | |
| " <8>,\n", | |
| " 6 ,\n", | |
| " 1 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "print(dict(fill_forced()))\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{8: 2, 33: 4}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>-</td><td>6</td><td><b>7</b></td><td>8</td><td>-</td><td>-</td><td>2</td></tr><tr><td><b>6</b></td><td>-</td><td>-</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>-</td><td>-</td><td>-</td></tr><tr><td>1</td><td><b>9</b></td><td><b>8</b></td><td>3</td><td>4</td><td>2</td><td>5</td><td><b>6</b></td><td>7</td></tr><tr><td><b>8</b></td><td>-</td><td>-</td><td>7</td><td><b>6</b></td><td>-</td><td>4</td><td>-</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>2</td><td>6</td><td><b>8</b></td><td>5</td><td><b>3</b></td><td>7</td><td>9</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>-</td><td>-</td><td>9</td><td><b>2</b></td><td>-</td><td>-</td><td>-</td><td><b>6</b></td></tr><tr><td>9</td><td><b>6</b></td><td>1</td><td>5</td><td>3</td><td>7</td><td><b>2</b></td><td><b>8</b></td><td>4</td></tr><tr><td>2</td><td>8</td><td>7</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>6</td><td>3</td><td><b>5</b></td></tr><tr><td>3</td><td>-</td><td>-</td><td>2</td><td><b>8</b></td><td>6</td><td>1</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 0 ,\n", | |
| " 6 ,\n", | |
| " <7>,\n", | |
| " 8 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 2 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 1 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 7 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 4 ,\n", | |
| " 0 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 2 ,\n", | |
| " 6 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " <3>,\n", | |
| " 7 ,\n", | |
| " 9 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 9 ,\n", | |
| " <2>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <6>,\n", | |
| " 9 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 5 ,\n", | |
| " 3 ,\n", | |
| " 7 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 8 ,\n", | |
| " 7 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 6 ,\n", | |
| " 3 ,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 2 ,\n", | |
| " <8>,\n", | |
| " 6 ,\n", | |
| " 1 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 17, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "print(dict(fill_forced()))\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{2: 4, 6: 9, 16: 4, 17: 8, 32: 1, 51: 8, 52: 5}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>4</td><td>6</td><td><b>7</b></td><td>8</td><td>9</td><td>-</td><td>2</td></tr><tr><td><b>6</b></td><td>-</td><td>-</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>-</td><td>4</td><td>8</td></tr><tr><td>1</td><td><b>9</b></td><td><b>8</b></td><td>3</td><td>4</td><td>2</td><td>5</td><td><b>6</b></td><td>7</td></tr><tr><td><b>8</b></td><td>-</td><td>-</td><td>7</td><td><b>6</b></td><td>1</td><td>4</td><td>-</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>2</td><td>6</td><td><b>8</b></td><td>5</td><td><b>3</b></td><td>7</td><td>9</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>-</td><td>-</td><td>9</td><td><b>2</b></td><td>-</td><td>8</td><td>5</td><td><b>6</b></td></tr><tr><td>9</td><td><b>6</b></td><td>1</td><td>5</td><td>3</td><td>7</td><td><b>2</b></td><td><b>8</b></td><td>4</td></tr><tr><td>2</td><td>8</td><td>7</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>6</td><td>3</td><td><b>5</b></td></tr><tr><td>3</td><td>-</td><td>-</td><td>2</td><td><b>8</b></td><td>6</td><td>1</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 4 ,\n", | |
| " 6 ,\n", | |
| " <7>,\n", | |
| " 8 ,\n", | |
| " 9 ,\n", | |
| " 0 ,\n", | |
| " 2 ,\n", | |
| " <6>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 0 ,\n", | |
| " 4 ,\n", | |
| " 8 ,\n", | |
| " 1 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " <8>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 7 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 4 ,\n", | |
| " 0 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 2 ,\n", | |
| " 6 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " <3>,\n", | |
| " 7 ,\n", | |
| " 9 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 9 ,\n", | |
| " <2>,\n", | |
| " 0 ,\n", | |
| " 8 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 9 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 5 ,\n", | |
| " 3 ,\n", | |
| " 7 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 8 ,\n", | |
| " 7 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 6 ,\n", | |
| " 3 ,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 0 ,\n", | |
| " 0 ,\n", | |
| " 2 ,\n", | |
| " <8>,\n", | |
| " 6 ,\n", | |
| " 1 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "print(dict(fill_forced()))\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{7: 1, 10: 7, 11: 2, 15: 3, 28: 5, 34: 2, 46: 1, 47: 3, 50: 4, 74: 5}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>4</td><td>6</td><td><b>7</b></td><td>8</td><td>9</td><td>1</td><td>2</td></tr><tr><td><b>6</b></td><td>7</td><td>2</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>3</td><td>4</td><td>8</td></tr><tr><td>1</td><td><b>9</b></td><td><b>8</b></td><td>3</td><td>4</td><td>2</td><td>5</td><td><b>6</b></td><td>7</td></tr><tr><td><b>8</b></td><td>5</td><td>-</td><td>7</td><td><b>6</b></td><td>1</td><td>4</td><td>2</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>2</td><td>6</td><td><b>8</b></td><td>5</td><td><b>3</b></td><td>7</td><td>9</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>1</td><td>3</td><td>9</td><td><b>2</b></td><td>4</td><td>8</td><td>5</td><td><b>6</b></td></tr><tr><td>9</td><td><b>6</b></td><td>1</td><td>5</td><td>3</td><td>7</td><td><b>2</b></td><td><b>8</b></td><td>4</td></tr><tr><td>2</td><td>8</td><td>7</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>6</td><td>3</td><td><b>5</b></td></tr><tr><td>3</td><td>-</td><td>5</td><td>2</td><td><b>8</b></td><td>6</td><td>1</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 4 ,\n", | |
| " 6 ,\n", | |
| " <7>,\n", | |
| " 8 ,\n", | |
| " 9 ,\n", | |
| " 1 ,\n", | |
| " 2 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " 2 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 8 ,\n", | |
| " 1 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " 0 ,\n", | |
| " 7 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 2 ,\n", | |
| " 6 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " <3>,\n", | |
| " 7 ,\n", | |
| " 9 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 1 ,\n", | |
| " 3 ,\n", | |
| " 9 ,\n", | |
| " <2>,\n", | |
| " 4 ,\n", | |
| " 8 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 9 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 5 ,\n", | |
| " 3 ,\n", | |
| " 7 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 8 ,\n", | |
| " 7 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 6 ,\n", | |
| " 3 ,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 0 ,\n", | |
| " 5 ,\n", | |
| " 2 ,\n", | |
| " <8>,\n", | |
| " 6 ,\n", | |
| " 1 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "print(dict(fill_forced()))\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{29: 9, 73: 4}\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<table><tr><td><b>5</b></td><td><b>3</b></td><td>4</td><td>6</td><td><b>7</b></td><td>8</td><td>9</td><td>1</td><td>2</td></tr><tr><td><b>6</b></td><td>7</td><td>2</td><td><b>1</b></td><td><b>9</b></td><td><b>5</b></td><td>3</td><td>4</td><td>8</td></tr><tr><td>1</td><td><b>9</b></td><td><b>8</b></td><td>3</td><td>4</td><td>2</td><td>5</td><td><b>6</b></td><td>7</td></tr><tr><td><b>8</b></td><td>5</td><td>9</td><td>7</td><td><b>6</b></td><td>1</td><td>4</td><td>2</td><td><b>3</b></td></tr><tr><td><b>4</b></td><td>2</td><td>6</td><td><b>8</b></td><td>5</td><td><b>3</b></td><td>7</td><td>9</td><td><b>1</b></td></tr><tr><td><b>7</b></td><td>1</td><td>3</td><td>9</td><td><b>2</b></td><td>4</td><td>8</td><td>5</td><td><b>6</b></td></tr><tr><td>9</td><td><b>6</b></td><td>1</td><td>5</td><td>3</td><td>7</td><td><b>2</b></td><td><b>8</b></td><td>4</td></tr><tr><td>2</td><td>8</td><td>7</td><td><b>4</b></td><td><b>1</b></td><td><b>9</b></td><td>6</td><td>3</td><td><b>5</b></td></tr><tr><td>3</td><td>4</td><td>5</td><td>2</td><td><b>8</b></td><td>6</td><td>1</td><td><b>7</b></td><td><b>9</b></td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "[<5>,\n", | |
| " <3>,\n", | |
| " 4 ,\n", | |
| " 6 ,\n", | |
| " <7>,\n", | |
| " 8 ,\n", | |
| " 9 ,\n", | |
| " 1 ,\n", | |
| " 2 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " 2 ,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 8 ,\n", | |
| " 1 ,\n", | |
| " <9>,\n", | |
| " <8>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 7 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " 9 ,\n", | |
| " 7 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " <3>,\n", | |
| " <4>,\n", | |
| " 2 ,\n", | |
| " 6 ,\n", | |
| " <8>,\n", | |
| " 5 ,\n", | |
| " <3>,\n", | |
| " 7 ,\n", | |
| " 9 ,\n", | |
| " <1>,\n", | |
| " <7>,\n", | |
| " 1 ,\n", | |
| " 3 ,\n", | |
| " 9 ,\n", | |
| " <2>,\n", | |
| " 4 ,\n", | |
| " 8 ,\n", | |
| " 5 ,\n", | |
| " <6>,\n", | |
| " 9 ,\n", | |
| " <6>,\n", | |
| " 1 ,\n", | |
| " 5 ,\n", | |
| " 3 ,\n", | |
| " 7 ,\n", | |
| " <2>,\n", | |
| " <8>,\n", | |
| " 4 ,\n", | |
| " 2 ,\n", | |
| " 8 ,\n", | |
| " 7 ,\n", | |
| " <4>,\n", | |
| " <1>,\n", | |
| " <9>,\n", | |
| " 6 ,\n", | |
| " 3 ,\n", | |
| " <5>,\n", | |
| " 3 ,\n", | |
| " 4 ,\n", | |
| " 5 ,\n", | |
| " 2 ,\n", | |
| " <8>,\n", | |
| " 6 ,\n", | |
| " 1 ,\n", | |
| " <7>,\n", | |
| " <9>]" | |
| ] | |
| }, | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "print(dict(fill_forced()))\n", | |
| "grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.7.2" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Some hacky solution that only sometimes works banged out in an hour at a ChiPy Algo SIG