5 "execution_count": 132,
13 "import collections\n",
15 "from IPython.display import HTML, display"
26 "INITIAL_BEAD_COUNT = 3"
37 "def xo_count(board):\n",
50 "execution_count": 195,
56 "def valid_board(board):\n",
57 " xs, os = xo_count(board)\n",
58 " return (xs - os) == 0 or (xs - os) == 1"
69 "def empty_board():\n",
70 " return tuple('.' * 9)"
81 "('.', '.', '.', '.', '.', '.', '.', '.', '.')"
86 "output_type": "execute_result"
101 "def all_boards():\n",
102 " return [b for b in itertools.product('.xo', repeat=9)\n",
103 " if valid_board(b)\n",
109 "execution_count": 8,
115 "def winner(board):\n",
116 " winning_player = None\n",
117 " if board[0] == board[1] == board[2] and board[0] != '.':\n",
118 " winning_player = board[0]\n",
119 " if board[3] == board[4] == board[5] and board[3] != '.':\n",
120 " winning_player = board[3]\n",
121 " if board[6] == board[7] == board[8] and board[6] != '.':\n",
122 " winning_player = board[6]\n",
123 " if board[0] == board[3] == board[6] and board[0] != '.':\n",
124 " winning_player = board[0]\n",
125 " if board[1] == board[4] == board[7] and board[1] != '.':\n",
126 " winning_player = board[1]\n",
127 " if board[2] == board[5] == board[8] and board[2] != '.':\n",
128 " winning_player = board[2]\n",
129 " if board[0] == board[4] == board[8] and board[0] != '.':\n",
130 " winning_player = board[0]\n",
131 " if board[2] == board[4] == board[6] and board[2] != '.':\n",
132 " winning_player = board[2]\n",
133 " return winning_player"
138 "execution_count": 196,
149 "execution_count": 196,
151 "output_type": "execute_result"
160 "execution_count": 197,
166 "[('.', '.', '.', '.', '.', '.', '.', '.', '.'),\n",
167 " ('.', '.', '.', '.', '.', '.', '.', '.', 'x'),\n",
168 " ('.', '.', '.', '.', '.', '.', '.', 'x', '.'),\n",
169 " ('.', '.', '.', '.', '.', '.', '.', 'x', 'o'),\n",
170 " ('.', '.', '.', '.', '.', '.', '.', 'o', 'x'),\n",
171 " ('.', '.', '.', '.', '.', '.', 'x', '.', '.'),\n",
172 " ('.', '.', '.', '.', '.', '.', 'x', '.', 'o'),\n",
173 " ('.', '.', '.', '.', '.', '.', 'x', 'x', 'o'),\n",
174 " ('.', '.', '.', '.', '.', '.', 'x', 'o', '.'),\n",
175 " ('.', '.', '.', '.', '.', '.', 'x', 'o', 'x')]"
178 "execution_count": 197,
180 "output_type": "execute_result"
189 "execution_count": 198,
195 "def show_board(b):\n",
197 " return s[0:3] + '\\n' + s[3:6] + '\\n' + s[6:9]"
202 "execution_count": 199,
207 "output_type": "stream",
216 "print(show_board([b for b in all_boards() if winner(b)][0]))"
221 "execution_count": 200,
226 "output_type": "stream",
235 "test_board = all_boards()[1000]\n",
237 "print(show_board(test_board))"
242 "execution_count": 201,
248 "def show_boards(bs):\n",
249 " rows = [[], [], []]\n",
252 " for i in range(3):\n",
253 " rows[i] += [s[i*3:i*3+3]]\n",
254 " return '\\n'.join(' '.join(r) for r in rows)"
259 "execution_count": 202,
264 "output_type": "stream",
266 ".x. .x. .x. .x. .x. .x. .x. .x. .x. .x.\n",
267 "oox oox oox oox oox oox oox oox oox oox\n",
268 "... ..x .x. .xo .ox x.. x.o xxo xo. xox\n"
273 "print(show_boards(all_boards()[1000:1010]))"
278 "execution_count": 203,
285 "# 3 4 5 -> 7 4 1\n",
287 "rotation = {0: 6, 1: 3, 2: 0, 3: 7, 4: 4, 5: 1, 6: 8, 7: 5, 8: 2}\n",
288 "inverse_rotation = {t: f for f, t in rotation.items()}"
293 "execution_count": 204,
300 "# 3 4 5 -> 5 4 3\n",
302 "reflection = {0: 2, 1: 1, 2: 0, 3: 5, 4: 4, 5: 3, 6: 8, 7: 7, 8: 6}"
307 "execution_count": 205,
313 "def rotate(board, n=1):\n",
315 " for _ in range(n):\n",
316 " b = tuple(b[rotation[i]] for i in range(len(board)))\n",
322 "execution_count": 206,
328 "def reflect(board, r=True):\n",
330 " return tuple(board[reflection[i]] for i in range(len(board)))\n",
337 "execution_count": 207,
344 "output_type": "stream",
346 ".x. .o. ... .x. .x.\n",
347 "oox .ox xoo xo. oox\n",
348 "... .x. .x. .o. ...\n"
353 "print(show_boards(rotate(test_board, i) for i in range(5)))"
358 "execution_count": 184,
363 "output_type": "stream",
372 "print(show_boards([test_board, reflect(test_board)]))"
377 "execution_count": 20,
383 "def transform(board, n, r):\n",
384 " b = rotate(board, n)\n",
385 " return reflect(b, r)"
390 "execution_count": 21,
396 "def untransform(board, n, r):\n",
397 " b = reflect(board, r)\n",
398 " return rotate(b, abs(4-n))"
403 "execution_count": 22,
409 "def all_transforms(board):\n",
410 " return [(transform(board, rot, ref), rot, ref)\n",
411 " for rot in range(4)\n",
412 " for ref in [False, True]]"
417 "execution_count": 185,
424 "output_type": "stream",
426 "..o o.. xx. .xx oox xoo oxo oxo\n",
427 "xox xox oo. .oo xox xox .oo oo.\n",
428 "xoo oox oxo oxo o.. ..o .xx xx.\n"
433 "print(show_boards(b for b, r, f in all_transforms(test_board)))"
438 "execution_count": 24,
444 "def score(board):\n",
445 " return ''.join(board)"
450 "execution_count": 25,
459 "execution_count": 25,
461 "output_type": "execute_result"
470 "execution_count": 26,
476 "def canonical(board):\n",
477 " return max(all_transforms(board), key=lambda brf: score(brf[0]))"
482 "execution_count": 27,
488 "(('x', 'x', '.', 'o', 'o', '.', 'o', 'x', 'o'), 1, False)"
491 "execution_count": 27,
493 "output_type": "execute_result"
497 "canonical(test_board)"
502 "execution_count": 28,
511 "execution_count": 28,
513 "output_type": "execute_result"
517 "b, r, f = canonical(test_board)\n",
518 "untransform(b, r, f) == test_board"
523 "execution_count": 29,
530 "for b, r, f in all_transforms(test_board):\n",
531 " assert untransform(b, r, f) == test_board"
536 "execution_count": 30,
545 "execution_count": 30,
547 "output_type": "execute_result"
556 "execution_count": 31,
565 "execution_count": 31,
567 "output_type": "execute_result"
571 "canonical_boards = set([canonical(b)[0] for b in all_boards()])\n",
572 "len(canonical_boards)"
577 "execution_count": 186,
582 "output_type": "stream",
591 "print(show_boards(b for b in sorted([b for b in canonical_boards if xo_count(b) == (1, 0)], key=score)))"
596 "execution_count": 33,
602 "def non_winning_boards():\n",
603 " return set([canonical(b)[0] for b in all_boards()\n",
604 " if not winner(b)\n",
610 "execution_count": 34,
616 "[('.', '.', '.', '.', '.', '.', '.', '.', '.'),\n",
617 " ('.', '.', '.', '.', 'o', '.', '.', '.', '.'),\n",
618 " ('.', '.', '.', '.', 'x', '.', '.', '.', '.'),\n",
619 " ('.', 'o', '.', '.', '.', '.', '.', '.', '.'),\n",
620 " ('.', 'o', '.', '.', 'x', '.', '.', '.', '.'),\n",
621 " ('.', 'o', '.', '.', 'x', '.', '.', 'o', '.'),\n",
622 " ('.', 'o', '.', 'o', 'x', '.', '.', '.', '.'),\n",
623 " ('.', 'x', '.', '.', '.', '.', '.', '.', '.'),\n",
624 " ('.', 'x', '.', '.', '.', '.', '.', 'o', '.'),\n",
625 " ('.', 'x', '.', '.', 'o', '.', '.', '.', '.')]"
628 "execution_count": 34,
630 "output_type": "execute_result"
634 "sorted(non_winning_boards())[:10]"
639 "execution_count": 210,
645 "def successors(board):\n",
646 " xs, os = xo_count(board)\n",
648 " if (xs - os) == 0:\n",
650 " for i in range(len(board)):\n",
651 " if board[i] == '.':\n",
652 " succs += [tuple(board[:i] + ('x',) + board[i+1:])]\n",
654 " if (xs - os) == 1:\n",
656 " for i in range(len(board)):\n",
657 " if board[i] == '.':\n",
658 " succs += [tuple(board[:i] + ('o',) + board[i+1:])]\n",
664 "execution_count": 211,
670 "('.', 'x', '.', 'o', 'o', 'x', '.', '.', '.')"
673 "execution_count": 211,
675 "output_type": "execute_result"
684 "execution_count": 212,
690 "[('x', 'x', '.', 'o', 'o', 'x', '.', '.', '.'),\n",
691 " ('.', 'x', 'x', 'o', 'o', 'x', '.', '.', '.'),\n",
692 " ('.', 'x', '.', 'o', 'o', 'x', 'x', '.', '.'),\n",
693 " ('.', 'x', '.', 'o', 'o', 'x', '.', 'x', '.'),\n",
694 " ('.', 'x', '.', 'o', 'o', 'x', '.', '.', 'x')]"
697 "execution_count": 212,
699 "output_type": "execute_result"
703 "successors(test_board)"
708 "execution_count": 38,
714 "def vacants(board):\n",
715 " return [i for i, c in enumerate(board) if c == '.']"
720 "execution_count": 39,
729 "execution_count": 39,
731 "output_type": "execute_result"
735 "vacants(test_board)"
740 "execution_count": 40,
746 "def apply_move(board, position, piece):\n",
747 " return tuple(board[:position] + (piece,) + board[position+1:])"
752 "execution_count": 41,
758 "(('o', '.', 'o', 'x', 'o', 'x', 'x', 'o', 'o'),\n",
759 " ('.', 'x', 'o', 'x', 'o', 'x', 'x', 'o', 'o'))"
762 "execution_count": 41,
764 "output_type": "execute_result"
768 "apply_move(test_board, 0, 'o'), apply_move(test_board, 1, 'x')"
773 "execution_count": 42,
779 "def token_for_player(is_player_1):\n",
780 " if is_player_1:\n",
788 "execution_count": 43,
794 "def new_game(player1, player2):\n",
795 " return {'board': empty_board(),\n",
796 " 'player1': player1,\n",
797 " 'player2': player2,\n",
798 " 'player1_active': True,\n",
804 "execution_count": 79,
810 "def game_finished(game):\n",
811 " return (winner(game['board']) is not None) or (game['board'].count('.') == 0)"
816 "execution_count": 50,
822 "def active_player(game):\n",
823 " if game['player1_active']:\n",
824 " return game['player1']\n",
826 " return game['player2']"
831 "execution_count": 213,
837 "def new_menace():\n",
838 " boxes = {'human?': False}\n",
839 " for b in non_winning_boards():\n",
840 " box = collections.Counter()\n",
841 " for s in vacants(b):\n",
842 " box[s] = INITIAL_BEAD_COUNT\n",
849 "execution_count": 214,
855 "{('x', '.', 'o', '.', 'o', 'x', '.', 'x', 'o'): Counter({1: 3, 3: 3, 6: 3}),\n",
864 " '.'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
865 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'o', 'x'): Counter({2: 3, 4: 3}),\n",
874 " '.'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 8: 3}),\n",
883 " 'o'): Counter({2: 3, 3: 3, 6: 3, 7: 3}),\n",
892 " '.'): Counter({2: 3, 3: 3, 4: 3, 7: 3, 8: 3}),\n",
893 " ('x', 'x', '.', '.', 'o', 'x', 'o', 'x', 'o'): Counter({2: 3, 3: 3}),\n",
902 " '.'): Counter({2: 3, 4: 3, 5: 3, 8: 3}),\n",
911 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3}),\n",
920 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
929 " '.'): Counter({5: 3, 6: 3, 7: 3, 8: 3}),\n",
930 " ('x', 'o', 'o', '.', 'x', 'x', '.', 'x', 'o'): Counter({3: 3, 6: 3}),\n",
939 " 'x'): Counter({2: 3, 3: 3, 4: 3, 5: 3}),\n",
948 " '.'): Counter({3: 3, 6: 3, 7: 3, 8: 3}),\n",
949 " ('x', 'o', 'o', '.', 'x', 'o', '.', 'x', '.'): Counter({3: 3, 6: 3, 8: 3}),\n",
950 " ('x', 'x', '.', 'o', '.', 'x', 'x', 'o', 'o'): Counter({2: 3, 4: 3}),\n",
959 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
960 " ('x', 'x', '.', '.', 'o', 'x', 'o', 'o', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
969 " '.'): Counter({0: 3, 2: 3, 6: 3, 7: 3, 8: 3}),\n",
978 " '.'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
979 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'x', 'o'): Counter({2: 3, 6: 3}),\n",
988 " '.'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
997 " 'o'): Counter({3: 3, 5: 3, 6: 3, 7: 3}),\n",
998 " ('x', 'x', 'o', 'x', '.', 'x', 'o', '.', 'o'): Counter({4: 3, 7: 3}),\n",
1007 " '.'): Counter({1: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
1008 " ('x', 'x', 'o', 'o', '.', '.', 'o', '.', 'x'): Counter({4: 3, 5: 3, 7: 3}),\n",
1009 " ('x', 'x', '.', '.', 'x', 'o', '.', 'o', 'o'): Counter({2: 3, 3: 3, 6: 3}),\n",
1018 " '.'): Counter({2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
1027 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
1036 " '.'): Counter({1: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
1037 " ('x', 'o', 'x', 'o', 'x', 'o', 'o', 'x', '.'): Counter({8: 3}),\n",
1038 " ('o', 'x', 'o', 'x', '.', '.', '.', 'x', 'o'): Counter({4: 3, 5: 3, 6: 3}),\n",
1047 " '.'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
1056 " 'o'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
1057 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'o', '.'): Counter({2: 3, 4: 3, 8: 3}),\n",
1066 " '.'): Counter({2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
1075 " 'o'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
1084 " '.'): Counter({4: 3, 6: 3, 7: 3, 8: 3}),\n",
1085 " ('o', 'x', 'o', 'x', 'o', 'x', '.', '.', '.'): Counter({6: 3, 7: 3, 8: 3}),\n",
1094 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
1095 " ('x', 'x', 'o', '.', 'x', '.', 'x', 'o', 'o'): Counter({3: 3, 5: 3}),\n",
1104 " '.'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
1113 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1114 " ('x', 'x', 'o', '.', 'o', 'x', '.', '.', 'o'): Counter({3: 3, 6: 3, 7: 3}),\n",
1123 " 'o'): Counter({2: 3, 5: 3, 6: 3, 7: 3}),\n",
1124 " ('x', 'o', '.', 'o', 'x', 'x', '.', '.', 'o'): Counter({2: 3, 6: 3, 7: 3}),\n",
1125 " ('x', 'x', '.', 'o', 'x', 'x', 'o', 'o', '.'): Counter({2: 3, 8: 3}),\n",
1134 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3}),\n",
1135 " ('x', 'x', '.', 'o', 'o', 'x', 'x', 'o', 'o'): Counter({2: 3}),\n",
1136 " ('x', 'x', '.', '.', 'o', 'o', '.', 'x', 'o'): Counter({2: 3, 3: 3, 6: 3}),\n",
1145 " '.'): Counter({2: 3, 6: 3, 7: 3, 8: 3}),\n",
1154 " '.'): Counter({2: 3, 4: 3, 5: 3, 8: 3}),\n",
1155 " ('x', 'o', 'x', '.', 'x', '.', 'o', 'o', '.'): Counter({3: 3, 5: 3, 8: 3}),\n",
1156 " ('x', 'x', 'o', 'o', '.', 'x', 'x', 'o', '.'): Counter({4: 3, 8: 3}),\n",
1165 " '.'): Counter({3: 3, 6: 3, 7: 3, 8: 3}),\n",
1174 " '.'): Counter({2: 3, 5: 3, 6: 3, 8: 3}),\n",
1183 " 'x'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3}),\n",
1184 " ('x', 'o', 'x', 'o', '.', '.', 'o', '.', 'x'): Counter({4: 3, 5: 3, 7: 3}),\n",
1193 " 'o'): Counter({2: 3, 3: 3, 6: 3, 7: 3}),\n",
1194 " ('x', 'x', '.', '.', '.', 'o', 'x', 'o', 'o'): Counter({2: 3, 3: 3, 4: 3}),\n",
1203 " 'x'): Counter({2: 3, 3: 3, 5: 3, 6: 3}),\n",
1212 " '.'): Counter({4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1213 " ('x', 'x', 'o', 'x', '.', 'x', '.', 'o', 'o'): Counter({4: 3, 6: 3}),\n",
1214 " ('x', 'o', 'o', 'o', 'x', 'x', '.', 'x', '.'): Counter({6: 3, 8: 3}),\n",
1215 " ('x', 'x', 'o', '.', 'o', 'x', 'x', '.', 'o'): Counter({3: 3, 7: 3}),\n",
1224 " '.'): Counter({3: 3, 4: 3, 5: 3, 8: 3}),\n",
1233 " 'o'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 7: 3}),\n",
1234 " ('x', 'o', 'x', 'o', 'x', '.', '.', '.', 'o'): Counter({5: 3, 6: 3, 7: 3}),\n",
1243 " 'o'): Counter({2: 3, 5: 3, 6: 3, 7: 3}),\n",
1244 " ('x', 'x', 'o', 'o', 'x', '.', '.', '.', 'o'): Counter({5: 3, 6: 3, 7: 3}),\n",
1245 " ('x', 'x', '.', '.', 'o', '.', 'o', 'x', 'o'): Counter({2: 3, 3: 3, 5: 3}),\n",
1246 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'o', 'x'): Counter({6: 3}),\n",
1255 " '.'): Counter({0: 3, 2: 3, 5: 3, 6: 3, 8: 3}),\n",
1264 " '.'): Counter({0: 3, 1: 3, 2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1265 " ('x', 'x', 'o', '.', 'x', 'x', 'o', '.', 'o'): Counter({3: 3, 7: 3}),\n",
1266 " ('x', 'o', 'o', 'o', 'x', 'x', '.', '.', '.'): Counter({6: 3, 7: 3, 8: 3}),\n",
1275 " '.'): Counter({0: 3, 2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
1276 " ('x', 'x', '.', 'o', '.', '.', 'x', 'o', 'o'): Counter({2: 3, 4: 3, 5: 3}),\n",
1277 " ('x', 'x', 'o', 'o', '.', 'x', 'x', 'o', 'o'): Counter({4: 3}),\n",
1286 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 8: 3}),\n",
1295 " '.'): Counter({0: 3, 2: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1304 " '.'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
1305 " ('x', 'x', 'o', 'o', 'x', 'o', '.', '.', '.'): Counter({6: 3, 7: 3, 8: 3}),\n",
1306 " ('x', 'x', 'o', '.', 'x', 'o', '.', 'o', '.'): Counter({3: 3, 6: 3, 8: 3}),\n",
1315 " '.'): Counter({3: 3, 4: 3, 7: 3, 8: 3}),\n",
1316 " 'human?': False,\n",
1317 " ('x', 'x', 'o', '.', 'o', 'o', '.', 'x', 'x'): Counter({3: 3, 6: 3}),\n",
1326 " '.'): Counter({2: 3, 6: 3, 7: 3, 8: 3}),\n",
1327 " ('x', 'x', 'o', 'x', 'x', 'o', 'o', 'o', '.'): Counter({8: 3}),\n",
1328 " ('x', 'x', '.', 'x', 'o', 'o', '.', '.', 'o'): Counter({2: 3, 6: 3, 7: 3}),\n",
1329 " ('x', 'o', 'x', 'o', '.', '.', '.', 'o', 'x'): Counter({4: 3, 5: 3, 6: 3}),\n",
1338 " '.'): Counter({3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1347 " '.'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1356 " '.'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
1357 " ('x', 'x', 'o', '.', 'x', '.', '.', 'o', 'o'): Counter({3: 3, 5: 3, 6: 3}),\n",
1366 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
1367 " ('x', 'o', '.', 'o', '.', 'x', '.', 'x', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
1368 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'o', 'x'): Counter(),\n",
1377 " '.'): Counter({3: 3, 5: 3, 7: 3, 8: 3}),\n",
1386 " '.'): Counter({2: 3, 3: 3, 5: 3, 8: 3}),\n",
1387 " ('x', 'x', 'o', 'o', 'x', '.', 'x', 'o', 'o'): Counter({5: 3}),\n",
1396 " 'x'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3}),\n",
1397 " ('x', 'x', 'o', '.', '.', 'o', 'x', 'o', 'x'): Counter({3: 3, 4: 3}),\n",
1406 " 'x'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
1415 " 'x'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
1424 " '.'): Counter({1: 3, 3: 3, 5: 3, 7: 3, 8: 3}),\n",
1433 " 'o'): Counter({2: 3, 3: 3, 5: 3, 7: 3}),\n",
1434 " ('x', 'o', 'x', '.', 'x', '.', 'o', '.', 'o'): Counter({3: 3, 5: 3, 7: 3}),\n",
1443 " 'o'): Counter({1: 3, 3: 3, 4: 3, 6: 3}),\n",
1452 " '.'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
1453 " ('x', 'o', 'o', 'o', 'x', 'x', 'o', 'x', '.'): Counter({8: 3}),\n",
1454 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'o', '.'): Counter({3: 3, 5: 3, 8: 3}),\n",
1455 " ('x', 'x', 'o', 'o', 'x', 'x', '.', '.', 'o'): Counter({6: 3, 7: 3}),\n",
1456 " ('x', 'x', 'o', '.', '.', '.', 'x', 'o', 'o'): Counter({3: 3, 4: 3, 5: 3}),\n",
1465 " '.'): Counter({1: 3, 3: 3, 5: 3, 8: 3}),\n",
1466 " ('o', 'x', '.', 'x', 'o', 'x', '.', 'o', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
1475 " '.'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 8: 3}),\n",
1476 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', 'o', '.'): Counter({8: 3}),\n",
1485 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
1486 " ('x', 'x', 'o', '.', 'o', '.', '.', 'x', 'o'): Counter({3: 3, 5: 3, 6: 3}),\n",
1495 " 'o'): Counter({3: 3, 4: 3, 5: 3, 6: 3}),\n",
1496 " ('x', 'x', 'o', 'o', 'x', 'x', '.', 'o', '.'): Counter({6: 3, 8: 3}),\n",
1505 " '.'): Counter({3: 3, 5: 3, 6: 3, 8: 3}),\n",
1506 " ('x', 'x', '.', '.', 'o', 'o', 'x', '.', 'o'): Counter({2: 3, 3: 3, 7: 3}),\n",
1507 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'x', '.'): Counter({5: 3, 8: 3}),\n",
1508 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'o', '.'): Counter({8: 3}),\n",
1517 " '.'): Counter({1: 3, 2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1526 " 'o'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 6: 3}),\n",
1535 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1544 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 7: 3}),\n",
1545 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'x', '.'): Counter({6: 3, 8: 3}),\n",
1546 " ('x', 'o', 'x', 'o', 'o', '.', '.', 'x', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
1547 " ('x', 'o', 'o', '.', 'x', 'x', '.', '.', 'o'): Counter({3: 3, 6: 3, 7: 3}),\n",
1556 " 'o'): Counter({1: 3, 2: 3, 3: 3, 6: 3}),\n",
1565 " '.'): Counter({0: 3, 2: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
1566 " ('x', 'o', 'o', 'o', '.', 'x', '.', 'x', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
1575 " '.'): Counter({4: 3, 5: 3, 6: 3, 8: 3}),\n",
1576 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'x', 'o'): Counter({2: 3}),\n",
1585 " 'o'): Counter({2: 3, 3: 3, 5: 3, 7: 3}),\n",
1594 " 'o'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
1595 " ('x', 'x', 'o', 'o', 'o', '.', 'x', '.', '.'): Counter({5: 3, 7: 3, 8: 3}),\n",
1596 " ('x', 'x', 'o', 'x', '.', 'o', 'o', '.', '.'): Counter({4: 3, 7: 3, 8: 3}),\n",
1597 " ('x', 'x', '.', 'o', '.', 'x', '.', 'o', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
1598 " ('x', 'o', '.', '.', 'o', 'o', 'x', '.', 'x'): Counter({2: 3, 3: 3, 7: 3}),\n",
1607 " '.'): Counter({3: 3, 5: 3, 7: 3, 8: 3}),\n",
1616 " '.'): Counter({4: 3, 5: 3, 6: 3, 8: 3}),\n",
1617 " ('x', 'x', 'o', '.', '.', '.', 'o', 'o', 'x'): Counter({3: 3, 4: 3, 5: 3}),\n",
1618 " ('o', 'x', 'o', 'x', 'x', '.', 'o', '.', '.'): Counter({5: 3, 7: 3, 8: 3}),\n",
1627 " '.'): Counter({2: 3, 3: 3, 5: 3, 7: 3, 8: 3}),\n",
1628 " ('x', 'o', 'o', '.', '.', 'o', 'x', '.', 'x'): Counter({3: 3, 4: 3, 7: 3}),\n",
1637 " 'o'): Counter({1: 3, 3: 3, 5: 3, 7: 3}),\n",
1638 " ('x', 'o', '.', '.', 'x', 'o', 'x', 'o', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
1639 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', '.', 'o'): Counter({7: 3}),\n",
1648 " '.'): Counter({4: 3, 5: 3, 7: 3, 8: 3}),\n",
1649 " ('x', 'x', 'o', '.', '.', 'o', 'o', '.', 'x'): Counter({3: 3, 4: 3, 7: 3}),\n",
1650 " ('x', 'x', '.', 'o', 'x', 'o', '.', 'o', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
1659 " '.'): Counter({2: 3, 5: 3, 6: 3, 8: 3}),\n",
1660 " ('o', 'x', 'o', 'x', '.', 'x', 'o', '.', '.'): Counter({4: 3, 7: 3, 8: 3}),\n",
1669 " 'x'): Counter({2: 3, 4: 3, 6: 3, 7: 3}),\n",
1670 " ('x', 'x', 'o', 'x', '.', 'o', '.', 'o', 'x'): Counter({4: 3, 6: 3}),\n",
1671 " ('x', 'o', '.', '.', '.', 'x', 'o', 'x', 'o'): Counter({2: 3, 3: 3, 4: 3}),\n",
1672 " ('x', 'x', 'o', 'o', '.', 'o', '.', 'x', 'x'): Counter({4: 3, 6: 3}),\n",
1681 " '.'): Counter({2: 3, 3: 3, 5: 3, 7: 3, 8: 3}),\n",
1690 " '.'): Counter({5: 3, 6: 3, 7: 3, 8: 3}),\n",
1691 " ('x', 'x', 'o', 'o', '.', 'o', 'x', '.', 'x'): Counter({4: 3, 7: 3}),\n",
1700 " 'o'): Counter({1: 3, 3: 3, 4: 3, 5: 3}),\n",
1701 " ('x', 'x', '.', 'o', 'o', 'x', 'x', '.', 'o'): Counter({2: 3, 7: 3}),\n",
1702 " ('x', 'o', 'o', '.', 'o', 'x', 'x', '.', '.'): Counter({3: 3, 7: 3, 8: 3}),\n",
1703 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'x', 'o'): Counter({4: 3, 6: 3}),\n",
1704 " ('x', 'x', 'o', '.', '.', 'x', 'o', '.', 'o'): Counter({3: 3, 4: 3, 7: 3}),\n",
1713 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3}),\n",
1714 " ('x', 'x', 'o', 'o', '.', 'x', 'x', '.', 'o'): Counter({4: 3, 7: 3}),\n",
1715 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'x', 'o'): Counter({6: 3}),\n",
1724 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
1725 " ('x', 'x', 'o', 'o', '.', 'o', 'x', 'o', 'x'): Counter({4: 3}),\n",
1734 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
1735 " ('x', 'x', '.', 'o', 'o', '.', '.', 'x', 'o'): Counter({2: 3, 5: 3, 6: 3}),\n",
1736 " ('x', 'x', '.', 'o', 'x', 'o', 'x', 'o', '.'): Counter({2: 3, 8: 3}),\n",
1745 " '.'): Counter({2: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1746 " ('x', 'x', 'o', 'o', '.', 'x', 'o', '.', 'x'): Counter({4: 3, 7: 3}),\n",
1747 " ('x', 'x', '.', 'o', 'x', 'x', 'o', '.', 'o'): Counter({2: 3, 7: 3}),\n",
1756 " '.'): Counter({2: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1765 " '.'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
1766 " ('x', 'x', '.', '.', 'o', 'o', 'o', '.', 'x'): Counter({2: 3, 3: 3, 7: 3}),\n",
1775 " '.'): Counter({2: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1784 " '.'): Counter({0: 3, 2: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
1793 " 'x'): Counter({3: 3, 4: 3, 5: 3, 7: 3}),\n",
1802 " '.'): Counter({0: 3, 2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1803 " ('o', 'x', '.', '.', 'x', 'x', 'o', '.', 'o'): Counter({2: 3, 3: 3, 7: 3}),\n",
1812 " '.'): Counter({1: 3, 3: 3, 7: 3, 8: 3}),\n",
1813 " ('x', 'x', 'o', 'x', 'o', 'o', '.', '.', '.'): Counter({6: 3, 7: 3, 8: 3}),\n",
1822 " '.'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
1823 " ('x', 'o', '.', '.', 'x', 'o', '.', 'x', 'o'): Counter({2: 3, 3: 3, 6: 3}),\n",
1824 " ('x', 'x', '.', 'x', 'o', 'o', '.', 'o', 'x'): Counter({2: 3, 6: 3}),\n",
1825 " ('x', 'x', '.', 'o', '.', 'o', 'x', 'o', 'x'): Counter({2: 3, 4: 3}),\n",
1834 " '.'): Counter({0: 3, 2: 3, 6: 3, 8: 3}),\n",
1843 " '.'): Counter({1: 3, 2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1852 " '.'): Counter({1: 3, 3: 3, 6: 3, 8: 3}),\n",
1853 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'x', 'o'): Counter({4: 3}),\n",
1862 " 'o'): Counter({3: 3, 4: 3, 6: 3, 7: 3}),\n",
1863 " ('x', 'o', 'o', '.', 'x', 'x', '.', 'o', '.'): Counter({3: 3, 6: 3, 8: 3}),\n",
1872 " '.'): Counter({3: 3, 4: 3, 5: 3, 7: 3, 8: 3}),\n",
1873 " ('x', 'x', '.', 'o', 'x', 'o', 'x', 'o', 'o'): Counter({2: 3}),\n",
1882 " '.'): Counter({2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
1883 " ('o', 'x', 'o', 'x', 'o', '.', '.', 'x', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
1892 " 'o'): Counter({3: 3, 4: 3, 5: 3, 7: 3}),\n",
1901 " '.'): Counter({2: 3, 3: 3, 5: 3, 8: 3}),\n",
1902 " ('o', 'x', '.', 'x', '.', 'x', '.', 'o', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
1903 " ('o', 'x', '.', 'o', 'o', 'x', '.', 'x', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
1912 " '.'): Counter({3: 3, 4: 3, 7: 3, 8: 3}),\n",
1921 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 3}),\n",
1930 " '.'): Counter({3: 3, 5: 3, 6: 3, 8: 3}),\n",
1931 " ('x', 'o', 'o', '.', 'o', 'x', '.', 'x', '.'): Counter({3: 3, 6: 3, 8: 3}),\n",
1940 " '.'): Counter({0: 3, 2: 3, 6: 3, 8: 3}),\n",
1941 " ('x', 'x', '.', '.', 'x', 'o', 'o', '.', 'o'): Counter({2: 3, 3: 3, 7: 3}),\n",
1942 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'o', 'x'): Counter({4: 3}),\n",
1943 " ('x', 'x', '.', 'o', 'x', 'o', '.', '.', 'o'): Counter({2: 3, 6: 3, 7: 3}),\n",
1944 " ('x', 'x', 'o', 'x', 'x', 'o', '.', 'o', '.'): Counter({6: 3, 8: 3}),\n",
1953 " 'x'): Counter({3: 3, 4: 3, 5: 3, 6: 3}),\n",
1954 " ('x', 'o', 'o', '.', '.', 'x', 'o', 'x', '.'): Counter({3: 3, 4: 3, 8: 3}),\n",
1963 " '.'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
1972 " '.'): Counter({1: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
1973 " ('x', 'o', 'x', 'o', 'x', 'o', '.', 'x', '.'): Counter({6: 3, 8: 3}),\n",
1982 " '.'): Counter({0: 3, 2: 3, 4: 3, 6: 3, 8: 3}),\n",
1983 " ('x', 'x', '.', 'x', 'x', 'o', '.', 'o', 'o'): Counter({2: 3, 6: 3}),\n",
1984 " ('x', 'x', 'o', '.', 'o', 'o', 'x', '.', '.'): Counter({3: 3, 7: 3, 8: 3}),\n",
1993 " 'o'): Counter({2: 3, 3: 3, 4: 3, 7: 3}),\n",
1994 " ('o', 'x', 'o', 'x', 'o', 'x', '.', 'x', '.'): Counter({6: 3, 8: 3}),\n",
1995 " ('x', 'o', 'o', '.', 'x', 'x', 'x', '.', 'o'): Counter({3: 3, 7: 3}),\n",
2004 " '.'): Counter({1: 3, 3: 3, 6: 3, 8: 3}),\n",
2005 " ('o', 'x', 'o', 'x', 'x', 'o', '.', '.', '.'): Counter({6: 3, 7: 3, 8: 3}),\n",
2006 " ('x', '.', 'o', '.', 'x', 'x', 'o', 'o', '.'): Counter({1: 3, 3: 3, 8: 3}),\n",
2015 " '.'): Counter({2: 3, 3: 3, 7: 3, 8: 3}),\n",
2016 " ('x', 'o', '.', '.', 'o', 'x', 'o', 'x', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
2017 " ('x', 'x', '.', 'o', 'o', '.', 'x', '.', 'o'): Counter({2: 3, 5: 3, 7: 3}),\n",
2018 " ('x', 'x', '.', 'o', '.', 'o', 'o', 'x', '.'): Counter({2: 3, 4: 3, 8: 3}),\n",
2019 " ('x', 'o', 'x', 'o', 'x', '.', '.', 'o', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
2028 " '.'): Counter({2: 3, 3: 3, 5: 3, 8: 3}),\n",
2037 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
2046 " '.'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
2047 " ('o', 'x', '.', 'o', 'x', 'x', '.', 'o', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
2048 " ('x', 'o', '.', '.', 'x', '.', 'o', 'x', 'o'): Counter({2: 3, 3: 3, 5: 3}),\n",
2057 " 'o'): Counter({1: 3, 3: 3, 6: 3, 7: 3}),\n",
2066 " '.'): Counter({4: 3, 5: 3, 7: 3, 8: 3}),\n",
2067 " ('x', 'x', 'o', 'x', '.', '.', 'o', '.', 'o'): Counter({4: 3, 5: 3, 7: 3}),\n",
2068 " ('x', 'x', 'o', '.', '.', 'o', '.', 'o', 'x'): Counter({3: 3, 4: 3, 6: 3}),\n",
2069 " ('x', 'o', 'x', 'o', '.', 'o', 'x', '.', '.'): Counter({4: 3, 7: 3, 8: 3}),\n",
2070 " ('x', 'o', 'o', '.', '.', 'x', 'x', 'o', '.'): Counter({3: 3, 4: 3, 8: 3}),\n",
2071 " ('x', 'x', 'o', 'o', '.', 'o', 'x', '.', '.'): Counter({4: 3, 7: 3, 8: 3}),\n",
2072 " ('x', 'x', 'o', 'o', '.', 'o', '.', '.', 'x'): Counter({4: 3, 6: 3, 7: 3}),\n",
2081 " 'o'): Counter({2: 3, 5: 3, 6: 3, 7: 3}),\n",
2082 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', '.', 'o'): Counter({7: 3}),\n",
2091 " '.'): Counter({2: 3, 3: 3, 4: 3, 8: 3}),\n",
2100 " 'x'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
2109 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
2118 " '.'): Counter({0: 3, 2: 3, 6: 3, 7: 3, 8: 3}),\n",
2127 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 3}),\n",
2128 " ('x', 'x', 'o', 'o', 'o', '.', '.', '.', 'x'): Counter({5: 3, 6: 3, 7: 3}),\n",
2129 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'x', 'o'): Counter({5: 3}),\n",
2138 " '.'): Counter({0: 3, 2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
2139 " ('x', 'x', 'o', 'o', 'x', 'x', 'x', 'o', 'o'): Counter(),\n",
2140 " ('x', 'x', 'o', '.', 'o', 'x', '.', 'x', 'o'): Counter({3: 3, 6: 3}),\n",
2141 " ('x', 'x', 'o', '.', 'o', 'o', 'x', 'o', 'x'): Counter({3: 3}),\n",
2142 " ('x', 'o', 'o', '.', 'x', 'x', 'o', 'x', '.'): Counter({3: 3, 8: 3}),\n",
2143 " ('x', 'x', '.', '.', 'o', 'x', 'o', '.', 'o'): Counter({2: 3, 3: 3, 7: 3}),\n",
2144 " ('x', 'x', 'o', 'o', 'x', '.', 'x', '.', 'o'): Counter({5: 3, 7: 3}),\n",
2153 " '.'): Counter({2: 3, 6: 3, 7: 3, 8: 3}),\n",
2162 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 7: 3, 8: 3}),\n",
2163 " ('x', '.', 'x', '.', 'o', '.', 'o', 'x', 'o'): Counter({1: 3, 3: 3, 5: 3}),\n",
2172 " 'o'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 7: 3}),\n",
2181 " 'x'): Counter({4: 3, 5: 3, 6: 3, 7: 3}),\n",
2190 " '.'): Counter({4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
2191 " ('x', 'o', 'o', '.', '.', 'x', '.', 'x', 'o'): Counter({3: 3, 4: 3, 6: 3}),\n",
2200 " '.'): Counter({2: 3, 4: 3, 7: 3, 8: 3}),\n",
2209 " '.'): Counter({3: 3, 5: 3, 7: 3, 8: 3}),\n",
2218 " 'x'): Counter({2: 3, 3: 3, 4: 3, 6: 3}),\n",
2219 " ('x', 'x', 'o', 'o', 'x', '.', 'o', '.', '.'): Counter({5: 3, 7: 3, 8: 3}),\n",
2228 " '.'): Counter({2: 3, 4: 3, 5: 3, 7: 3, 8: 3}),\n",
2237 " '.'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
2246 " '.'): Counter({0: 3, 2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
2247 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'o', 'x'): Counter({4: 3, 6: 3}),\n",
2256 " '.'): Counter({1: 3, 3: 3, 6: 3, 8: 3}),\n",
2257 " ('x', 'o', 'x', 'o', 'x', '.', '.', 'x', 'o'): Counter({5: 3, 6: 3}),\n",
2266 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 8: 3}),\n",
2267 " ('x', 'o', 'x', 'o', '.', '.', 'o', 'x', '.'): Counter({4: 3, 5: 3, 8: 3}),\n",
2268 " ('o', 'x', 'o', 'x', '.', 'o', '.', 'x', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
2269 " ('x', 'o', '.', '.', 'x', 'o', 'o', 'x', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
2278 " '.'): Counter({2: 3, 3: 3, 7: 3, 8: 3}),\n",
2287 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
2288 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'x', '.'): Counter({2: 3, 8: 3}),\n",
2297 " 'o'): Counter({1: 3, 3: 3, 5: 3, 6: 3}),\n",
2298 " ('x', 'o', 'x', 'o', '.', '.', 'x', '.', 'o'): Counter({4: 3, 5: 3, 7: 3}),\n",
2307 " 'o'): Counter({2: 3, 3: 3, 6: 3, 7: 3}),\n",
2316 " '.'): Counter({2: 3, 3: 3, 4: 3, 8: 3}),\n",
2317 " ('x', 'x', 'o', 'o', '.', 'o', '.', 'x', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
2318 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'o', '.'): Counter({4: 3, 5: 3, 8: 3}),\n",
2319 " ('x', 'x', 'o', '.', 'o', '.', 'x', '.', 'o'): Counter({3: 3, 5: 3, 7: 3}),\n",
2328 " 'o'): Counter({4: 3, 5: 3, 6: 3, 7: 3}),\n",
2337 " '.'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
2338 " ('x', 'x', 'o', 'x', 'o', 'x', '.', '.', 'o'): Counter({6: 3, 7: 3}),\n",
2347 " '.'): Counter({2: 3, 6: 3, 7: 3, 8: 3}),\n",
2348 " ('x', 'x', '.', 'o', '.', '.', 'o', 'o', 'x'): Counter({2: 3, 4: 3, 5: 3}),\n",
2349 " ('x', 'x', '.', 'o', '.', 'o', 'o', '.', 'x'): Counter({2: 3, 4: 3, 7: 3}),\n",
2358 " 'o'): Counter({2: 3, 3: 3, 5: 3, 6: 3}),\n",
2359 " ('x', 'o', 'o', '.', 'o', '.', 'x', '.', 'x'): Counter({3: 3, 5: 3, 7: 3}),\n",
2360 " ('x', 'o', 'x', '.', 'x', '.', 'o', 'x', 'o'): Counter({3: 3, 5: 3}),\n",
2369 " '.'): Counter({3: 3, 5: 3, 6: 3, 8: 3}),\n",
2370 " ('x', 'o', 'o', '.', 'x', 'x', 'x', 'o', '.'): Counter({3: 3, 8: 3}),\n",
2379 " '.'): Counter({2: 3, 3: 3, 5: 3, 7: 3, 8: 3}),\n",
2388 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
2389 " ('x', 'x', 'o', '.', 'o', '.', '.', 'o', 'x'): Counter({3: 3, 5: 3, 6: 3}),\n",
2390 " ('x', 'o', 'x', 'o', 'x', '.', 'o', 'x', 'o'): Counter({5: 3}),\n",
2391 " ('x', 'x', '.', 'o', 'x', '.', 'x', 'o', 'o'): Counter({2: 3, 5: 3}),\n",
2400 " '.'): Counter({3: 3, 4: 3, 6: 3, 8: 3}),\n",
2409 " '.'): Counter({2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
2410 " ('x', 'x', '.', 'x', 'o', 'x', '.', 'o', 'o'): Counter({2: 3, 6: 3}),\n",
2419 " '.'): Counter({1: 3, 3: 3, 4: 3, 8: 3}),\n",
2420 " ('x', 'x', '.', 'o', 'o', 'x', 'o', '.', 'x'): Counter({2: 3, 7: 3}),\n",
2429 " '.'): Counter({0: 3, 2: 3, 4: 3, 6: 3, 8: 3}),\n",
2430 " ('x', 'x', 'o', '.', '.', '.', 'o', 'x', 'o'): Counter({3: 3, 4: 3, 5: 3}),\n",
2439 " 'o'): Counter({1: 3, 3: 3, 5: 3, 7: 3}),\n",
2448 " '.'): Counter({5: 3, 6: 3, 7: 3, 8: 3}),\n",
2449 " ('x', 'o', 'x', 'o', '.', '.', '.', 'x', 'o'): Counter({4: 3, 5: 3, 6: 3}),\n",
2458 " '.'): Counter({0: 3, 2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
2467 " '.'): Counter({2: 3, 5: 3, 7: 3, 8: 3}),\n",
2476 " '.'): Counter({2: 3, 3: 3, 4: 3, 8: 3}),\n",
2477 " ('x', 'o', 'x', '.', 'o', '.', 'x', '.', 'o'): Counter({3: 3, 5: 3, 7: 3}),\n",
2486 " 'x'): Counter({2: 3, 3: 3, 4: 3, 7: 3}),\n",
2495 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
2504 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
2505 " ('x', 'x', '.', 'o', '.', 'o', '.', 'x', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
2506 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'x', 'o'): Counter({5: 3, 6: 3}),\n",
2515 " '.'): Counter({3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
2516 " ('x', 'x', 'o', 'x', 'x', '.', '.', 'o', 'o'): Counter({5: 3, 6: 3}),\n",
2525 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
2526 " ('x', 'x', '.', '.', 'o', 'o', '.', 'o', 'x'): Counter({2: 3, 3: 3, 6: 3}),\n",
2527 " ('x', 'x', '.', '.', 'o', '.', 'x', 'o', 'o'): Counter({2: 3, 3: 3, 5: 3}),\n",
2536 " '.'): Counter({2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
2545 " '.'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
2554 " 'x'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 7: 3}),\n",
2563 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
2564 " ('x', 'x', 'o', '.', 'o', 'x', '.', 'o', '.'): Counter({3: 3, 6: 3, 8: 3}),\n",
2565 " ('x', 'x', '.', 'o', 'x', '.', 'o', 'o', '.'): Counter({2: 3, 5: 3, 8: 3}),\n",
2574 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 8: 3}),\n",
2583 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
2592 " '.'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
2601 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
2602 " ('x', 'x', '.', 'x', '.', 'o', '.', 'o', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
2611 " '.'): Counter({0: 3, 1: 3, 2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
2612 " ('x', 'x', '.', 'o', 'x', 'x', '.', 'o', 'o'): Counter({2: 3, 6: 3}),\n",
2621 " 'o'): Counter({2: 3, 4: 3, 6: 3, 7: 3}),\n",
2622 " ('o', 'x', 'o', 'x', 'x', '.', '.', 'o', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
2631 " '.'): Counter({2: 3, 3: 3, 7: 3, 8: 3}),\n",
2640 " '.'): Counter({3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
2641 " ('x', 'o', 'x', 'o', 'o', '.', 'x', '.', 'x'): Counter({5: 3, 7: 3}),\n",
2642 " ('x', 'x', 'o', 'o', 'o', '.', 'x', '.', 'x'): Counter({5: 3, 7: 3}),\n",
2651 " 'o'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 7: 3}),\n",
2660 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
2669 " 'x'): Counter({1: 3, 2: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
2678 " 'x'): Counter({2: 3, 4: 3, 5: 3, 6: 3}),\n",
2687 " '.'): Counter({1: 3, 3: 3, 5: 3, 8: 3}),\n",
2688 " ('x', 'o', '.', '.', 'x', 'x', '.', 'o', 'o'): Counter({2: 3, 3: 3, 6: 3}),\n",
2697 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
2706 " '.'): Counter({3: 3, 4: 3, 5: 3, 7: 3, 8: 3}),\n",
2707 " ('x', 'o', 'x', 'o', '.', 'o', 'x', 'o', 'x'): Counter({4: 3}),\n",
2716 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
2717 " ('x', 'o', '.', 'o', 'o', 'x', '.', 'x', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
2726 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
2735 " '.'): Counter({3: 3, 5: 3, 7: 3, 8: 3}),\n",
2736 " ('x', 'o', '.', '.', 'o', 'x', '.', 'x', 'o'): Counter({2: 3, 3: 3, 6: 3}),\n",
2745 " '.'): Counter({2: 3, 3: 3, 4: 3, 8: 3}),\n",
2754 " '.'): Counter({2: 3, 4: 3, 6: 3, 8: 3}),\n",
2755 " ('x', 'x', '.', 'o', 'o', 'x', '.', '.', 'o'): Counter({2: 3, 6: 3, 7: 3}),\n",
2764 " 'x'): Counter({2: 3, 4: 3, 5: 3, 7: 3}),\n",
2773 " '.'): Counter({1: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
2774 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'o', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
2775 " ('x', 'x', 'o', 'o', '.', '.', 'o', 'x', '.'): Counter({4: 3, 5: 3, 8: 3}),\n",
2784 " '.'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 8: 3}),\n",
2793 " '.'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
2802 " 'o'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 6: 3}),\n",
2803 " ('x', 'o', '.', '.', 'x', 'x', 'o', 'o', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
2804 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'x', 'o'): Counter({2: 3, 4: 3}),\n",
2805 " ('x', '.', 'o', '.', 'x', 'x', '.', 'o', 'o'): Counter({1: 3, 3: 3, 6: 3}),\n",
2814 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3}),\n",
2815 " ('x', 'x', '.', 'o', '.', '.', 'o', 'x', 'o'): Counter({2: 3, 4: 3, 5: 3}),\n",
2816 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'o', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
2817 " ('o', 'x', 'o', 'x', '.', 'x', 'o', 'x', 'o'): Counter({4: 3}),\n",
2818 " ('x', 'o', 'x', 'o', 'x', '.', 'o', '.', '.'): Counter({5: 3, 7: 3, 8: 3}),\n",
2827 " '.'): Counter({4: 3, 6: 3, 7: 3, 8: 3}),\n",
2836 " '.'): Counter({3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
2837 " ('x', 'x', '.', '.', 'o', 'o', 'x', 'o', 'x'): Counter({2: 3, 3: 3}),\n",
2846 " 'o'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
2855 " 'o'): Counter({2: 3, 4: 3, 5: 3, 6: 3}),\n",
2856 " ('x', 'x', 'o', 'x', 'x', 'o', 'o', '.', '.'): Counter({7: 3, 8: 3}),\n",
2865 " '.'): Counter({4: 3, 6: 3, 7: 3, 8: 3}),\n",
2866 " ('x', 'x', '.', 'o', '.', 'x', 'o', '.', 'o'): Counter({2: 3, 4: 3, 7: 3}),\n",
2875 " '.'): Counter({2: 3, 3: 3, 4: 3, 7: 3, 8: 3}),\n",
2876 " ('x', 'o', 'x', 'o', 'o', '.', 'x', '.', '.'): Counter({5: 3, 7: 3, 8: 3}),\n",
2885 " '.'): Counter({3: 3, 4: 3, 7: 3, 8: 3}),\n",
2886 " ('x', 'x', '.', '.', 'o', '.', 'o', 'o', 'x'): Counter({2: 3, 3: 3, 5: 3}),\n",
2895 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 3}),\n",
2896 " ('x', 'o', 'o', '.', 'x', '.', 'o', 'x', '.'): Counter({3: 3, 5: 3, 8: 3}),\n",
2905 " '.'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
2906 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'o', 'x'): Counter({3: 3, 5: 3}),\n",
2907 " ('x', 'x', '.', 'o', 'x', 'o', 'x', '.', 'o'): Counter({2: 3, 7: 3}),\n",
2916 " '.'): Counter({2: 3, 6: 3, 7: 3, 8: 3}),\n",
2925 " 'o'): Counter({2: 3, 3: 3, 5: 3, 6: 3}),\n",
2934 " 'o'): Counter({3: 3, 4: 3, 5: 3, 7: 3}),\n",
2935 " ('x', 'x', 'o', 'o', 'o', 'x', '.', '.', '.'): Counter({6: 3, 7: 3, 8: 3}),\n",
2944 " 'x'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
2953 " '.'): Counter({2: 3, 3: 3, 7: 3, 8: 3}),\n",
2954 " ('x', 'x', 'o', 'x', 'x', '.', 'o', '.', 'o'): Counter({5: 3, 7: 3}),\n",
2955 " ('x', 'x', 'o', 'o', '.', 'x', '.', '.', 'o'): Counter({4: 3, 6: 3, 7: 3}),\n",
2964 " '.'): Counter({3: 3, 4: 3, 6: 3, 8: 3}),\n",
2965 " ('x', 'x', 'o', '.', 'o', 'o', '.', 'x', '.'): Counter({3: 3, 6: 3, 8: 3}),\n",
2974 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 8: 3}),\n",
2983 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
2984 " ('x', 'o', 'x', 'o', 'x', 'o', '.', '.', '.'): Counter({6: 3, 7: 3, 8: 3}),\n",
2985 " ('x', 'o', 'x', 'o', 'x', '.', 'o', 'x', '.'): Counter({5: 3, 8: 3}),\n",
2994 " 'x'): Counter({2: 3, 3: 3, 5: 3, 7: 3}),\n",
2995 " ('o', 'x', '.', 'x', 'x', 'o', '.', '.', 'o'): Counter({2: 3, 6: 3, 7: 3}),\n",
3004 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 7: 3}),\n",
3005 " ('x', 'x', 'o', 'x', '.', 'o', 'o', '.', 'x'): Counter({4: 3, 7: 3}),\n",
3014 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3015 " ('x', 'o', 'o', '.', 'x', 'x', 'o', 'x', 'o'): Counter({3: 3}),\n",
3016 " ('x', 'x', 'o', 'x', 'o', 'o', '.', 'x', '.'): Counter({6: 3, 8: 3}),\n",
3025 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3}),\n",
3026 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'o', 'x'): Counter({2: 3, 6: 3}),\n",
3027 " ('x', 'x', 'o', 'o', 'x', '.', '.', 'o', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
3028 " ('o', 'o', '.', 'o', 'x', 'x', '.', 'x', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
3029 " ('x', 'x', 'o', 'o', '.', 'o', 'x', 'x', '.'): Counter({4: 3, 8: 3}),\n",
3038 " 'o'): Counter({1: 3, 2: 3, 3: 3, 6: 3}),\n",
3039 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'o', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
3048 " '.'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3057 " 'x'): Counter({4: 3, 5: 3, 6: 3, 7: 3}),\n",
3058 " ('x', 'x', 'o', 'x', 'o', 'o', '.', 'o', 'x'): Counter({6: 3}),\n",
3067 " 'x'): Counter({3: 3, 5: 3, 6: 3, 7: 3}),\n",
3076 " '.'): Counter({2: 3, 3: 3, 4: 3, 8: 3}),\n",
3077 " ('x', 'x', 'o', 'o', 'x', '.', 'x', 'o', '.'): Counter({5: 3, 8: 3}),\n",
3078 " ('x', 'o', 'o', '.', '.', 'x', 'x', '.', 'o'): Counter({3: 3, 4: 3, 7: 3}),\n",
3087 " '.'): Counter({2: 3, 6: 3, 7: 3, 8: 3}),\n",
3088 " ('x', 'o', '.', '.', 'x', 'o', 'x', '.', 'o'): Counter({2: 3, 3: 3, 7: 3}),\n",
3089 " ('x', 'o', 'x', 'o', '.', 'o', 'x', '.', 'x'): Counter({4: 3, 7: 3}),\n",
3098 " '.'): Counter({3: 3, 5: 3, 6: 3, 8: 3}),\n",
3099 " ('x', 'o', 'o', '.', 'x', '.', 'x', '.', 'o'): Counter({3: 3, 5: 3, 7: 3}),\n",
3108 " '.'): Counter({2: 3, 4: 3, 6: 3, 8: 3}),\n",
3117 " '.'): Counter({2: 3, 3: 3, 5: 3, 8: 3}),\n",
3126 " 'x'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 7: 3}),\n",
3127 " ('x', 'x', '.', '.', 'o', 'o', 'x', 'o', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
3136 " '.'): Counter({2: 3, 4: 3, 7: 3, 8: 3}),\n",
3137 " ('x', 'x', 'o', 'o', 'x', 'o', 'x', '.', '.'): Counter({7: 3, 8: 3}),\n",
3138 " ('x', 'x', 'o', 'x', '.', 'x', 'o', 'o', '.'): Counter({4: 3, 8: 3}),\n",
3139 " ('x', 'x', 'o', 'o', '.', '.', '.', 'o', 'x'): Counter({4: 3, 5: 3, 6: 3}),\n",
3140 " ('o', 'x', 'o', 'x', '.', 'x', 'o', 'x', '.'): Counter({4: 3, 8: 3}),\n",
3141 " ('x', 'x', '.', 'o', 'o', '.', '.', 'o', 'x'): Counter({2: 3, 5: 3, 6: 3}),\n",
3142 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'o', 'x'): Counter({4: 3, 5: 3}),\n",
3151 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
3160 " 'o'): Counter({2: 3, 3: 3, 6: 3, 7: 3}),\n",
3161 " ('o', 'x', '.', 'o', 'x', 'x', '.', '.', 'o'): Counter({2: 3, 6: 3, 7: 3}),\n",
3162 " ('x', 'x', 'o', '.', 'x', 'o', 'o', '.', '.'): Counter({3: 3, 7: 3, 8: 3}),\n",
3163 " ('x', 'x', '.', 'o', '.', 'o', '.', 'o', 'x'): Counter({2: 3, 4: 3, 6: 3}),\n",
3172 " 'x'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
3181 " '.'): Counter({2: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
3182 " ('x', 'x', 'o', 'x', 'o', 'o', '.', '.', 'x'): Counter({6: 3, 7: 3}),\n",
3191 " 'x'): Counter({3: 3, 4: 3, 6: 3, 7: 3}),\n",
3200 " 'o'): Counter({2: 3, 4: 3, 6: 3, 7: 3}),\n",
3209 " '.'): Counter({0: 3, 2: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3210 " ('o', 'x', '.', '.', 'x', 'x', 'o', 'o', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
3211 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'o', 'x'): Counter({5: 3, 6: 3}),\n",
3212 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', '.', '.'): Counter({7: 3, 8: 3}),\n",
3221 " 'o'): Counter({1: 3, 3: 3, 4: 3, 6: 3, 7: 3}),\n",
3222 " ('x', 'o', '.', 'o', 'x', 'x', '.', 'x', 'o'): Counter({2: 3, 6: 3}),\n",
3231 " '.'): Counter({4: 3, 5: 3, 6: 3, 8: 3}),\n",
3240 " '.'): Counter({3: 3, 6: 3, 7: 3, 8: 3}),\n",
3241 " ('x', 'o', 'x', 'o', '.', 'o', '.', 'x', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
3242 " ('x', 'o', 'o', '.', 'x', '.', '.', 'x', 'o'): Counter({3: 3, 5: 3, 6: 3}),\n",
3251 " 'o'): Counter({2: 3, 3: 3, 5: 3, 6: 3}),\n",
3252 " ('x', 'o', 'x', '.', 'o', '.', 'o', 'x', '.'): Counter({3: 3, 5: 3, 8: 3}),\n",
3261 " '.'): Counter({1: 3, 3: 3, 4: 3, 7: 3, 8: 3}),\n",
3262 " ('x', 'x', '.', 'o', 'o', '.', 'x', 'o', '.'): Counter({2: 3, 5: 3, 8: 3}),\n",
3263 " ('x', 'x', 'o', '.', 'x', 'o', 'x', 'o', '.'): Counter({3: 3, 8: 3}),\n",
3264 " ('x', 'x', '.', 'o', 'x', '.', '.', 'o', 'o'): Counter({2: 3, 5: 3, 6: 3}),\n",
3265 " ('o', 'x', 'o', 'x', 'x', '.', '.', '.', 'o'): Counter({5: 3, 6: 3, 7: 3}),\n",
3274 " '.'): Counter({2: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
3283 " '.'): Counter({2: 3, 3: 3, 7: 3, 8: 3}),\n",
3284 " ('x', 'x', 'o', '.', 'x', 'x', 'o', 'o', '.'): Counter({3: 3, 8: 3}),\n",
3293 " '.'): Counter({2: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
3294 " ('x', 'x', '.', 'o', 'o', '.', 'o', '.', 'x'): Counter({2: 3, 5: 3, 7: 3}),\n",
3295 " ('x', 'o', 'x', '.', '.', '.', 'x', 'o', 'o'): Counter({3: 3, 4: 3, 5: 3}),\n",
3304 " 'o'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
3305 " ('x', 'x', 'o', '.', '.', 'x', 'o', 'o', '.'): Counter({3: 3, 4: 3, 8: 3}),\n",
3314 " '.'): Counter({2: 3, 3: 3, 7: 3, 8: 3}),\n",
3315 " ('x', 'x', '.', '.', 'o', 'x', '.', 'o', 'o'): Counter({2: 3, 3: 3, 6: 3}),\n",
3316 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'x', '.'): Counter({4: 3, 8: 3}),\n",
3317 " ('x', 'x', 'o', '.', 'x', '.', 'o', 'o', '.'): Counter({3: 3, 5: 3, 8: 3}),\n",
3326 " '.'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
3327 " ('x', 'x', '.', 'o', 'o', '.', 'o', 'x', '.'): Counter({2: 3, 5: 3, 8: 3}),\n",
3336 " 'o'): Counter({2: 3, 4: 3, 5: 3, 7: 3}),\n",
3345 " '.'): Counter({3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
3354 " '.'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3355 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'o', 'x'): Counter({2: 3}),\n",
3356 " ('x', 'x', 'o', 'o', '.', '.', '.', 'x', 'o'): Counter({4: 3, 5: 3, 6: 3}),\n",
3357 " ('x', 'o', 'o', '.', 'x', 'x', 'x', 'o', 'o'): Counter({3: 3}),\n",
3358 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'o', 'x'): Counter({5: 3}),\n",
3367 " '.'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 6: 3, 8: 3}),\n",
3376 " '.'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
3385 " '.'): Counter({2: 3, 4: 3, 6: 3, 8: 3}),\n",
3386 " ('x', 'o', '.', '.', 'x', 'x', 'o', '.', 'o'): Counter({2: 3, 3: 3, 7: 3}),\n",
3387 " ('x', '.', 'o', '.', 'x', 'x', 'o', '.', 'o'): Counter({1: 3, 3: 3, 7: 3}),\n",
3396 " '.'): Counter({2: 3, 4: 3, 6: 3, 8: 3}),\n",
3405 " '.'): Counter({4: 3, 5: 3, 6: 3, 8: 3}),\n",
3414 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3}),\n",
3415 " ('x', 'x', 'o', 'o', 'o', '.', '.', 'x', 'x'): Counter({5: 3, 6: 3}),\n",
3424 " 'o'): Counter({1: 3, 2: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
3433 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
3442 " 'x'): Counter({2: 3, 3: 3, 5: 3, 7: 3}),\n",
3443 " ('o', 'x', '.', 'x', 'x', 'o', '.', 'o', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
3452 " '.'): Counter({2: 3, 4: 3, 6: 3, 8: 3}),\n",
3461 " '.'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 8: 3}),\n",
3462 " ('x', 'x', 'o', 'o', '.', 'o', 'o', 'x', 'x'): Counter({4: 3}),\n",
3463 " ('x', 'x', 'o', 'x', 'o', '.', '.', '.', 'o'): Counter({5: 3, 6: 3, 7: 3}),\n",
3464 " ('x', 'x', 'o', 'x', 'o', 'x', '.', 'o', '.'): Counter({6: 3, 8: 3}),\n",
3473 " '.'): Counter({2: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
3474 " ('x', 'x', 'o', '.', 'o', 'o', 'x', 'x', '.'): Counter({3: 3, 8: 3}),\n",
3475 " ('x', 'x', 'o', 'x', 'o', 'x', '.', 'o', 'o'): Counter({6: 3}),\n",
3476 " ('x', 'x', '.', 'o', '.', 'o', 'x', 'o', '.'): Counter({2: 3, 4: 3, 8: 3}),\n",
3477 " ('x', 'x', '.', '.', 'o', 'o', 'o', 'x', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
3486 " '.'): Counter({3: 3, 4: 3, 6: 3, 8: 3}),\n",
3495 " '.'): Counter({3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3496 " ('x', 'x', 'o', 'o', 'o', 'x', '.', '.', 'x'): Counter({6: 3, 7: 3}),\n",
3505 " '.'): Counter({3: 3, 5: 3, 7: 3, 8: 3}),\n",
3506 " ('x', 'x', '.', 'o', 'o', '.', 'x', 'o', 'x'): Counter({2: 3, 5: 3}),\n",
3507 " ('x', 'x', 'o', 'o', '.', 'x', 'o', '.', '.'): Counter({4: 3, 7: 3, 8: 3}),\n",
3516 " 'x'): Counter({3: 3, 4: 3, 5: 3, 7: 3}),\n",
3525 " '.'): Counter({2: 3, 4: 3, 6: 3, 8: 3}),\n",
3526 " ('x', '.', 'o', '.', '.', 'x', 'o', 'x', 'o'): Counter({1: 3, 3: 3, 4: 3}),\n",
3535 " 'o'): Counter({2: 3, 4: 3, 6: 3, 7: 3}),\n",
3536 " ('x', 'x', 'o', 'o', '.', '.', 'o', 'x', 'x'): Counter({4: 3, 5: 3}),\n",
3537 " ('x', 'x', 'o', '.', '.', 'x', '.', 'o', 'o'): Counter({3: 3, 4: 3, 6: 3}),\n",
3538 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'x', 'o'): Counter(),\n",
3539 " ('x', 'x', '.', '.', 'x', 'o', 'o', 'o', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
3540 " ('x', 'x', '.', 'o', 'x', 'o', 'o', '.', '.'): Counter({2: 3, 7: 3, 8: 3}),\n",
3549 " '.'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
3558 " '.'): Counter({4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3567 " '.'): Counter({3: 3, 4: 3, 5: 3, 8: 3}),\n",
3576 " 'o'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
3577 " ('x', 'x', 'o', '.', '.', 'o', 'o', 'x', '.'): Counter({3: 3, 4: 3, 8: 3}),\n",
3586 " '.'): Counter({0: 3, 2: 3, 5: 3, 6: 3, 8: 3}),\n",
3595 " 'x'): Counter({2: 3, 3: 3, 4: 3, 7: 3}),\n",
3596 " ('x', 'o', 'o', '.', 'x', 'o', 'x', '.', '.'): Counter({3: 3, 7: 3, 8: 3}),\n",
3605 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3}),\n",
3614 " '.'): Counter({2: 3, 3: 3, 5: 3, 7: 3, 8: 3}),\n",
3623 " '.'): Counter({3: 3, 4: 3, 5: 3, 7: 3, 8: 3}),\n",
3632 " 'o'): Counter({2: 3, 3: 3, 4: 3, 5: 3}),\n",
3633 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'x', 'o'): Counter({3: 3, 5: 3}),\n",
3634 " ('x', 'x', 'o', '.', '.', 'x', 'x', 'o', 'o'): Counter({3: 3, 4: 3}),\n",
3635 " ('x', 'x', 'o', '.', 'x', '.', 'o', '.', 'o'): Counter({3: 3, 5: 3, 7: 3}),\n",
3644 " '.'): Counter({2: 3, 3: 3, 6: 3, 8: 3}),\n",
3645 " ('x', 'x', '.', 'o', 'o', 'x', 'x', 'o', '.'): Counter({2: 3, 8: 3}),\n",
3646 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'x', 'o'): Counter({4: 3, 5: 3}),\n",
3647 " ('x', 'o', 'o', '.', 'x', 'x', 'o', '.', '.'): Counter({3: 3, 7: 3, 8: 3}),\n",
3648 " ('x', 'x', 'o', 'x', '.', 'o', '.', 'o', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
3657 " '.'): Counter({0: 3, 2: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3666 " '.'): Counter({2: 3, 3: 3, 7: 3, 8: 3}),\n",
3667 " ('x', 'x', 'o', 'o', 'x', 'x', '.', 'o', 'o'): Counter({6: 3}),\n",
3676 " '.'): Counter({2: 3, 3: 3, 4: 3, 7: 3, 8: 3}),\n",
3685 " '.'): Counter({2: 3, 3: 3, 4: 3, 5: 3, 7: 3, 8: 3}),\n",
3686 " ('x', 'o', '.', 'o', 'x', 'x', '.', 'o', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
3687 " ('x', 'x', 'o', '.', '.', 'x', 'o', 'x', 'o'): Counter({3: 3, 4: 3}),\n",
3688 " ('x', 'x', 'o', 'x', '.', 'o', 'o', 'o', 'x'): Counter({4: 3}),\n",
3697 " '.'): Counter({3: 3, 4: 3, 5: 3, 8: 3}),\n",
3698 " ('x', 'x', '.', 'x', 'o', 'o', '.', 'o', '.'): Counter({2: 3, 6: 3, 8: 3}),\n",
3699 " ('x', 'x', '.', '.', '.', 'o', 'o', 'o', 'x'): Counter({2: 3, 3: 3, 4: 3}),\n",
3700 " ('x', 'x', 'o', 'o', 'x', 'o', 'x', 'o', '.'): Counter({8: 3}),\n",
3701 " ('x', 'o', 'x', 'o', 'o', '.', '.', '.', 'x'): Counter({5: 3, 6: 3, 7: 3}),\n",
3702 " ('x', 'x', '.', '.', 'o', 'x', 'x', 'o', 'o'): Counter({2: 3, 3: 3}),\n",
3711 " '.'): Counter({3: 3, 5: 3, 6: 3, 8: 3}),\n",
3720 " 'x'): Counter({2: 3, 3: 3, 6: 3, 7: 3}),\n",
3721 " ('x', 'o', 'o', 'o', 'x', '.', '.', 'x', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
3730 " '.'): Counter({3: 3, 4: 3, 5: 3, 8: 3}),\n",
3739 " '.'): Counter({1: 3, 3: 3, 5: 3, 7: 3, 8: 3}),\n",
3748 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
3757 " '.'): Counter({2: 3, 3: 3, 6: 3, 7: 3, 8: 3}),\n",
3766 " '.'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 7: 3, 8: 3}),\n",
3775 " '.'): Counter({0: 3, 2: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3784 " '.'): Counter({2: 3, 3: 3, 5: 3, 8: 3}),\n",
3793 " 'o'): Counter({2: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
3802 " '.'): Counter({1: 3, 2: 3, 3: 3, 6: 3, 8: 3}),\n",
3811 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
3812 " ('x', 'o', '.', '.', 'x', 'x', 'o', 'x', 'o'): Counter({2: 3, 3: 3}),\n",
3821 " '.'): Counter({2: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3822 " ('x', '.', 'o', '.', 'x', 'x', 'o', 'x', 'o'): Counter({1: 3, 3: 3}),\n",
3831 " '.'): Counter({2: 3, 5: 3, 7: 3, 8: 3}),\n",
3840 " 'o'): Counter({2: 3, 3: 3, 4: 3, 7: 3}),\n",
3841 " ('x', 'x', 'o', '.', 'o', 'x', 'x', 'o', '.'): Counter({3: 3, 8: 3}),\n",
3842 " ('x', 'x', 'o', 'o', '.', '.', 'x', '.', 'o'): Counter({4: 3, 5: 3, 7: 3}),\n",
3843 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', '.', '.'): Counter({7: 3, 8: 3}),\n",
3852 " 'o'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 7: 3}),\n",
3853 " ('x', 'x', '.', '.', 'x', 'o', 'x', 'o', 'o'): Counter({2: 3, 3: 3}),\n",
3862 " 'x'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
3863 " ('x', 'x', 'o', '.', 'x', 'x', '.', 'o', 'o'): Counter({3: 3, 6: 3}),\n",
3864 " ('x', 'o', 'x', '.', '.', '.', 'o', 'x', 'o'): Counter({3: 3, 4: 3, 5: 3}),\n",
3873 " 'o'): Counter({1: 3, 2: 3, 3: 3, 4: 3, 6: 3, 7: 3}),\n",
3874 " ('x', 'o', 'o', 'o', 'x', 'x', '.', 'x', 'o'): Counter({6: 3}),\n",
3875 " ('x', 'x', 'o', '.', 'o', 'x', 'x', 'o', 'o'): Counter({3: 3}),\n",
3884 " 'x'): Counter({2: 3, 5: 3, 6: 3, 7: 3}),\n",
3893 " '.'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 8: 3}),\n",
3894 " ('x', 'o', 'o', '.', 'x', '.', 'x', 'o', '.'): Counter({3: 3, 5: 3, 8: 3}),\n",
3895 " ('x', 'x', 'o', '.', 'o', 'o', 'x', '.', 'x'): Counter({3: 3, 7: 3}),\n",
3896 " ('x', 'x', '.', 'o', '.', 'o', 'x', '.', 'o'): Counter({2: 3, 4: 3, 7: 3}),\n",
3897 " ('o', 'x', '.', '.', 'o', 'x', 'o', 'x', '.'): Counter({2: 3, 3: 3, 8: 3}),\n",
3906 " 'o'): Counter({2: 3, 3: 3, 5: 3, 7: 3}),\n",
3907 " ('o', 'x', 'o', 'x', '.', 'x', '.', 'o', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
3916 " '.'): Counter({3: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3925 " '.'): Counter({4: 3, 5: 3, 7: 3, 8: 3}),\n",
3934 " '.'): Counter({2: 3, 3: 3, 4: 3, 8: 3}),\n",
3935 " ('x', 'x', '.', 'o', 'o', 'x', 'o', '.', '.'): Counter({2: 3, 7: 3, 8: 3}),\n",
3936 " ('x', 'x', '.', 'o', 'x', '.', 'o', '.', 'o'): Counter({2: 3, 5: 3, 7: 3}),\n",
3945 " '.'): Counter({1: 3, 3: 3, 5: 3, 6: 3, 7: 3, 8: 3}),\n",
3954 " '.'): Counter({5: 3, 6: 3, 7: 3, 8: 3}),\n",
3963 " '.'): Counter({2: 3, 6: 3, 7: 3, 8: 3}),\n",
3964 " ('x', 'x', 'o', 'o', 'o', '.', '.', 'x', '.'): Counter({5: 3, 6: 3, 8: 3}),\n",
3965 " ('x', 'x', '.', '.', '.', 'o', 'o', 'x', 'o'): Counter({2: 3, 3: 3, 4: 3}),\n",
3966 " ('x', 'x', 'o', '.', 'o', 'o', '.', '.', 'x'): Counter({3: 3, 6: 3, 7: 3}),\n",
3967 " ('x', 'x', 'o', 'x', '.', '.', '.', 'o', 'o'): Counter({4: 3, 5: 3, 6: 3}),\n",
3976 " '.'): Counter({2: 3, 3: 3, 4: 3, 7: 3, 8: 3}),\n",
3985 " '.'): Counter({1: 3, 3: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
3994 " 'o'): Counter({2: 3, 3: 3, 4: 3, 7: 3}),\n",
3995 " ('x', 'o', '.', '.', 'o', 'x', 'x', '.', 'o'): Counter({2: 3, 3: 3, 7: 3}),\n",
4004 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
4005 " ('x', 'x', 'o', '.', '.', 'o', 'x', 'o', '.'): Counter({3: 3, 4: 3, 8: 3})}"
4008 "execution_count": 214,
4010 "output_type": "execute_result"
4018 "cell_type": "code",
4019 "execution_count": 53,
4025 "def menace_move(game):\n",
4026 " board, r, f = canonical(game['board'])\n",
4027 " player = active_player(game)\n",
4028 " token = token_for_player(game['player1_active'])\n",
4029 " cmove = random.choice(list(player[board].elements()))\n",
4030 " cmove_board = apply_move(empty_board(), cmove, token)\n",
4031 " moved_board = untransform(cmove_board, r, f)\n",
4032 " return moved_board.index(token)"
4036 "cell_type": "code",
4037 "execution_count": 48,
4043 "def new_human():\n",
4044 " return {'human?': True}"
4048 "cell_type": "code",
4049 "execution_count": 71,
4055 "def human_move(game):\n",
4056 " if game['history']:\n",
4057 " print('Opponent moved to', game['history'][-1]['move'])\n",
4059 " print('You play first.')\n",
4060 " print('The board is:')\n",
4061 " print(show_board(game['board']))\n",
4063 " valid_moves = vacants(game['board'])\n",
4064 " valid_input = False\n",
4066 " while not valid_input:\n",
4067 " user_input = input('Your move ({})? '.format(', '.join(str(m) for m in valid_moves)))\n",
4068 " if user_input.isnumeric():\n",
4069 " move = int(user_input)\n",
4070 " if move in valid_moves:\n",
4071 " valid_input = True\n",
4073 " print('Number not a valid move.')\n",
4075 " print('Please enter a number.')\n",
4080 "cell_type": "code",
4081 "execution_count": 61,
4087 "def make_move(game):\n",
4088 " if game['player1_active']:\n",
4089 " active = game['player1']\n",
4091 " active = game['player2']\n",
4092 " if active['human?']:\n",
4093 " move = human_move(game)\n",
4095 " move = menace_move(game)\n",
4096 " token = token_for_player(game['player1_active'])\n",
4097 " game['history'] += [{'player1?': game['player1_active'], 'move': move, 'board': game['board']}]\n",
4098 " game['board'] = apply_move(game['board'], move, token)\n",
4099 " game['player1_active'] = not game['player1_active'] "
4103 "cell_type": "code",
4104 "execution_count": 215,
4110 "(('x', '.', '.', '.', '.', 'o', 'o', 'x', '.'),\n",
4111 " [{'board': ('.', '.', '.', '.', '.', '.', '.', '.', '.'),\n",
4113 " 'player1?': True},\n",
4114 " {'board': ('x', '.', '.', '.', '.', '.', '.', '.', '.'),\n",
4116 " 'player1?': False},\n",
4117 " {'board': ('x', '.', '.', '.', '.', 'o', '.', '.', '.'),\n",
4119 " 'player1?': True},\n",
4120 " {'board': ('x', '.', '.', '.', '.', 'o', '.', 'x', '.'),\n",
4122 " 'player1?': False}])"
4125 "execution_count": 215,
4127 "output_type": "execute_result"
4131 "p1 = new_menace()\n",
4132 "p2 = new_menace()\n",
4133 "g = new_game(p1, p2)\n",
4134 "for _ in range(4):\n",
4136 "g['board'], g['history']"
4140 "cell_type": "code",
4141 "execution_count": 63,
4147 "def play_game(game):\n",
4148 " while not game_finished(game):\n",
4153 "cell_type": "code",
4154 "execution_count": 80,
4160 "def winning_player(game):\n",
4161 " if winner(game['board']) is None:\n",
4163 " elif game['history'][-1]['player1?']:\n",
4164 " return game['player1']\n",
4166 " return game['player2']\n",
4168 "def losing_player(game):\n",
4169 " if winner(game['board']) is None:\n",
4171 " elif game['history'][-1]['player1?']:\n",
4172 " return game['player2']\n",
4174 " return game['player1'] "
4178 "cell_type": "code",
4179 "execution_count": 216,
4185 "(('.', 'x', 'x', '.', 'x', 'o', 'o', 'x', 'o'),\n",
4186 " [{'board': ('.', '.', '.', '.', '.', '.', '.', '.', '.'),\n",
4188 " 'player1?': True},\n",
4189 " {'board': ('.', 'x', '.', '.', '.', '.', '.', '.', '.'),\n",
4191 " 'player1?': False},\n",
4192 " {'board': ('.', 'x', '.', '.', '.', 'o', '.', '.', '.'),\n",
4194 " 'player1?': True},\n",
4195 " {'board': ('.', 'x', '.', '.', 'x', 'o', '.', '.', '.'),\n",
4197 " 'player1?': False},\n",
4198 " {'board': ('.', 'x', '.', '.', 'x', 'o', 'o', '.', '.'),\n",
4200 " 'player1?': True},\n",
4201 " {'board': ('.', 'x', 'x', '.', 'x', 'o', 'o', '.', '.'),\n",
4203 " 'player1?': False},\n",
4204 " {'board': ('.', 'x', 'x', '.', 'x', 'o', 'o', '.', 'o'),\n",
4206 " 'player1?': True}])"
4209 "execution_count": 216,
4211 "output_type": "execute_result"
4215 "p1 = new_menace()\n",
4216 "p2 = new_menace()\n",
4217 "g = new_game(p1, p2)\n",
4219 "g['board'], g['history']"
4223 "cell_type": "code",
4224 "execution_count": 217,
4229 "output_type": "stream",
4238 "print(show_board(g['board']))"
4242 "cell_type": "code",
4243 "execution_count": 218,
4252 "execution_count": 218,
4254 "output_type": "execute_result"
4258 "winner(g['board'])"
4262 "cell_type": "code",
4263 "execution_count": 219,
4268 "output_type": "stream",
4270 "You play first.\n",
4275 "Your move (0, 1, 2, 3, 4, 5, 6, 7, 8)? 4\n",
4276 "Opponent moved to 5\n",
4281 "Your move (0, 1, 2, 3, 6, 7, 8)? 2\n",
4282 "Opponent moved to 3\n",
4287 "Your move (0, 1, 6, 7, 8)? 6\n",
4298 "p1 = new_menace()\n",
4299 "ph = new_human()\n",
4300 "if random.choice([True, False]):\n",
4301 " g = new_game(p1, ph)\n",
4303 " g = new_game(ph, p1)\n",
4306 "print('\\nFinal position')\n",
4307 "print(show_board(g['board']))\n",
4308 "if winner(g['board']) is None:\n",
4309 " print('A draw')\n",
4310 "elif winning_player(g) == ph:\n",
4311 " print('You won')\n",
4313 " print('You lost')"
4317 "cell_type": "code",
4318 "execution_count": 220,
4323 "output_type": "stream",
4332 "print(show_board(g['board']))"
4336 "cell_type": "code",
4337 "execution_count": 91,
4343 "def winning_moves(game):\n",
4344 " return [h for h in game['history'] \n",
4345 " if h['player1?'] == game['history'][-1]['player1?']]\n",
4347 "def losing_moves(game):\n",
4348 " return [h for h in game['history'] \n",
4349 " if h['player1?'] != game['history'][-1]['player1?']]"
4353 "cell_type": "code",
4354 "execution_count": 130,
4360 "def update_players(game, allow_drop_move=False):\n",
4361 " if winner(game['board']) is not None:\n",
4362 " update_winner(game)\n",
4363 " update_loser(game, allow_drop_move=allow_drop_move)"
4367 "cell_type": "code",
4368 "execution_count": 111,
4374 "def update_winner(game):\n",
4375 " player = winning_player(game)\n",
4376 " moves = winning_moves(game)\n",
4377 " for m in moves:\n",
4378 " board, r, f = canonical(m['board'])\n",
4379 " move_board = apply_move(empty_board(), m['move'], '+')\n",
4380 " cmove_board = transform(move_board, r, f)\n",
4381 " cmove = cmove_board.index('+')\n",
4382 " player[board][cmove] += 1"
4386 "cell_type": "code",
4387 "execution_count": 126,
4391 "def update_loser(game, allow_drop_move=False):\n",
4392 " player = losing_player(game)\n",
4393 " moves = losing_moves(game)\n",
4394 " for m in moves:\n",
4395 " board, r, f = canonical(m['board'])\n",
4396 " move_board = apply_move(empty_board(), m['move'], '+')\n",
4397 " cmove_board = transform(move_board, r, f)\n",
4398 " cmove = cmove_board.index('+')\n",
4399 "# if player[board][cmove] > 1:\n",
4400 "# player[board][cmove] -= 1\n",
4401 " if allow_drop_move:\n",
4402 " if len(list(player[board].elements())) > 1:\n",
4403 " player[board][cmove] -= 1\n",
4405 " if player[board][cmove] > 1:\n",
4406 " player[board][cmove] -= 1\n"
4410 "cell_type": "code",
4411 "execution_count": 221,
4417 "({('x', '.', 'o', '.', 'o', 'x', '.', 'x', 'o'): Counter({1: 1, 3: 1, 6: 3}),\n",
4426 " '.'): Counter({3: 2, 4: 5, 5: 2, 6: 3, 8: 5}),\n",
4427 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'o', 'x'): Counter({2: 1, 4: 1}),\n",
4436 " '.'): Counter({1: 27, 2: 494, 3: 446, 6: 1146, 8: 88}),\n",
4445 " 'o'): Counter({2: 1, 3: 1, 6: 1, 7: 1}),\n",
4454 " '.'): Counter({2: 5, 3: 10, 4: 6, 7: 3, 8: 3}),\n",
4455 " ('x', 'x', '.', '.', 'o', 'x', 'o', 'x', 'o'): Counter({2: 12, 3: 1}),\n",
4464 " '.'): Counter({2: 1, 4: 1, 5: 1, 8: 1}),\n",
4473 " 'o'): Counter({2: 3, 3: 1, 4: 3, 5: 1}),\n",
4482 " '.'): Counter({2: 3, 3: 10, 4: 22, 5: 7, 6: 7, 7: 12, 8: 16}),\n",
4491 " '.'): Counter({5: 1, 6: 1, 7: 1, 8: 1}),\n",
4492 " ('x', 'o', 'o', '.', 'x', 'x', '.', 'x', 'o'): Counter({3: 3, 6: 1}),\n",
4501 " 'x'): Counter({2: 2, 3: 1, 4: 1, 5: 1}),\n",
4510 " '.'): Counter({3: 13, 6: 25, 7: 2, 8: 6}),\n",
4511 " ('x', 'o', 'o', '.', 'x', 'o', '.', 'x', '.'): Counter({3: 1, 6: 1, 8: 115}),\n",
4512 " ('x', 'x', '.', 'o', '.', 'x', 'x', 'o', 'o'): Counter({2: 3, 4: 1}),\n",
4521 " '.'): Counter({2: 1, 3: 2, 6: 4, 8: 1}),\n",
4522 " ('x', 'x', '.', '.', 'o', 'x', 'o', 'o', '.'): Counter({2: 23, 3: 1, 8: 1}),\n",
4531 " '.'): Counter({0: 9, 2: 3, 6: 5, 7: 2, 8: 3}),\n",
4540 " '.'): Counter({2: 2, 4: 3, 5: 2, 6: 3, 7: 3, 8: 5}),\n",
4541 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'x', 'o'): Counter({2: 3, 6: 1}),\n",
4550 " '.'): Counter({1: 8, 3: 4, 5: 4, 6: 2, 8: 2}),\n",
4559 " 'o'): Counter({3: 3, 5: 12, 6: 2, 7: 7}),\n",
4560 " ('x', 'x', 'o', 'x', '.', 'x', 'o', '.', 'o'): Counter({4: 4, 7: 6}),\n",
4569 " '.'): Counter({1: 2, 3: 3, 4: 3, 6: 4, 8: 5}),\n",
4570 " ('x', 'x', 'o', 'o', '.', '.', 'o', '.', 'x'): Counter({4: 4, 5: 3, 7: 2}),\n",
4571 " ('x', 'x', '.', '.', 'x', 'o', '.', 'o', 'o'): Counter({2: 189, 3: 1, 6: 1}),\n",
4580 " '.'): Counter({2: 1, 3: 1, 6: 1, 7: 1, 8: 6}),\n",
4589 " '.'): Counter({2: 209, 3: 301, 5: 454, 6: 475, 8: 269}),\n",
4598 " '.'): Counter({1: 3, 3: 5, 4: 8, 6: 3, 8: 2}),\n",
4599 " ('x', 'o', 'x', 'o', 'x', 'o', 'o', 'x', '.'): Counter({8: 1277}),\n",
4600 " ('o', 'x', 'o', 'x', '.', '.', '.', 'x', 'o'): Counter({4: 5, 5: 2, 6: 1}),\n",
4609 " '.'): Counter({1: 8, 2: 23, 3: 7, 4: 4, 6: 1, 7: 2, 8: 1}),\n",
4618 " 'o'): Counter({3: 2, 4: 1, 5: 3, 6: 3, 7: 3}),\n",
4619 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'o', '.'): Counter({2: 3, 4: 4, 8: 3}),\n",
4628 " '.'): Counter({2: 6, 3: 6, 6: 5, 7: 1, 8: 5}),\n",
4637 " 'o'): Counter({2: 36, 3: 89, 5: 77, 6: 166, 7: 89}),\n",
4646 " '.'): Counter({4: 5, 6: 1, 7: 1, 8: 2}),\n",
4647 " ('o', 'x', 'o', 'x', 'o', 'x', '.', '.', '.'): Counter({6: 2, 7: 1, 8: 1}),\n",
4656 " '.'): Counter({2: 1, 3: 1, 6: 1, 8: 3}),\n",
4657 " ('x', 'x', 'o', '.', 'x', '.', 'x', 'o', 'o'): Counter({3: 3, 5: 26}),\n",
4666 " '.'): Counter({1: 2, 2: 16, 3: 15, 4: 14, 6: 25, 7: 2, 8: 12}),\n",
4675 " '.'): Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
4676 " ('x', 'x', 'o', '.', 'o', 'x', '.', '.', 'o'): Counter({3: 1, 6: 7, 7: 2}),\n",
4685 " 'o'): Counter({2: 1, 5: 1, 6: 1, 7: 1}),\n",
4686 " ('x', 'o', '.', 'o', 'x', 'x', '.', '.', 'o'): Counter({2: 11, 6: 75, 7: 3}),\n",
4687 " ('x', 'x', '.', 'o', 'x', 'x', 'o', 'o', '.'): Counter({2: 1, 8: 22}),\n",
4696 " 'o'): Counter({2: 4, 3: 4, 4: 3, 5: 3, 6: 4}),\n",
4697 " ('x', 'x', '.', 'o', 'o', 'x', 'x', 'o', 'o'): Counter({2: 27}),\n",
4698 " ('x', 'x', '.', '.', 'o', 'o', '.', 'x', 'o'): Counter({2: 11, 3: 2, 6: 1}),\n",
4707 " '.'): Counter({2: 1, 6: 1, 7: 1, 8: 1}),\n",
4716 " '.'): Counter({2: 4, 4: 1, 5: 2, 8: 1}),\n",
4717 " ('x', 'o', 'x', '.', 'x', '.', 'o', 'o', '.'): Counter({3: 1, 5: 1, 8: 110}),\n",
4718 " ('x', 'x', 'o', 'o', '.', 'x', 'x', 'o', '.'): Counter({4: 3, 8: 3}),\n",
4727 " '.'): Counter({3: 1, 6: 1, 7: 1, 8: 1}),\n",
4736 " '.'): Counter({2: 8, 5: 9, 6: 4, 8: 3}),\n",
4745 " 'x'): Counter({2: 2, 3: 3, 4: 4, 5: 4, 6: 3}),\n",
4746 " ('x', 'o', 'x', 'o', '.', '.', 'o', '.', 'x'): Counter({4: 4, 5: 6, 7: 6}),\n",
4755 " 'o'): Counter({2: 4, 3: 1, 6: 2, 7: 1}),\n",
4756 " ('x', 'x', '.', '.', '.', 'o', 'x', 'o', 'o'): Counter({2: 5, 3: 5, 4: 3}),\n",
4765 " 'x'): Counter({2: 1, 3: 1, 5: 1, 6: 1}),\n",
4774 " '.'): Counter({4: 5, 5: 2, 6: 2, 7: 2, 8: 1}),\n",
4775 " ('x', 'x', 'o', 'x', '.', 'x', '.', 'o', 'o'): Counter({4: 1, 6: 9}),\n",
4776 " ('x', 'o', 'o', 'o', 'x', 'x', '.', 'x', '.'): Counter({6: 1, 8: 3}),\n",
4777 " ('x', 'x', 'o', '.', 'o', 'x', 'x', '.', 'o'): Counter({3: 3, 7: 1}),\n",
4786 " '.'): Counter({3: 3, 4: 7, 5: 3, 8: 3}),\n",
4795 " 'o'): Counter({1: 5, 2: 2, 3: 3, 6: 5, 7: 4}),\n",
4804 " 'o'): Counter({5: 15, 6: 487, 7: 10}),\n",
4813 " 'o'): Counter({2: 1, 5: 1, 6: 1, 7: 1}),\n",
4822 " 'o'): Counter({5: 14, 6: 1, 7: 439}),\n",
4823 " ('x', 'x', '.', '.', 'o', '.', 'o', 'x', 'o'): Counter({2: 10, 3: 1, 5: 1}),\n",
4824 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'o', 'x'): Counter({6: 3}),\n",
4833 " '.'): Counter({0: 747, 2: 600, 5: 1, 6: 499, 8: 184}),\n",
4842 " '.'): Counter({0: 1, 1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
4843 " ('x', 'x', 'o', '.', 'x', 'x', 'o', '.', 'o'): Counter({3: 1, 7: 18}),\n",
4852 " '.'): Counter({6: 11, 7: 11, 8: 681}),\n",
4861 " '.'): Counter({0: 14, 2: 5, 3: 1, 4: 5, 5: 2, 6: 9, 8: 4}),\n",
4862 " ('x', 'x', '.', 'o', '.', '.', 'x', 'o', 'o'): Counter({2: 4, 4: 3, 5: 3}),\n",
4863 " ('x', 'x', 'o', 'o', '.', 'x', 'x', 'o', 'o'): Counter({4: 3}),\n",
4872 " '.'): Counter({2: 1, 3: 4, 4: 5, 5: 5, 8: 3}),\n",
4881 " '.'): Counter({0: 1, 2: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
4890 " '.'): Counter({2: 3, 4: 8, 5: 2, 6: 7, 8: 5}),\n",
4899 " '.'): Counter({6: 1, 7: 233, 8: 399}),\n",
4900 " ('x', 'x', 'o', '.', 'x', 'o', '.', 'o', '.'): Counter({3: 1, 6: 1, 8: 172}),\n",
4909 " '.'): Counter({3: 3, 4: 3, 7: 2, 8: 8}),\n",
4910 " 'human?': False,\n",
4911 " ('x', 'x', 'o', '.', 'o', 'o', '.', 'x', 'x'): Counter({3: 11, 6: 14}),\n",
4920 " '.'): Counter({2: 1, 6: 1, 7: 1, 8: 1}),\n",
4921 " ('x', 'x', 'o', 'x', 'x', 'o', 'o', 'o', '.'): Counter({8: 11}),\n",
4922 " ('x', 'x', '.', 'x', 'o', 'o', '.', '.', 'o'): Counter({2: 7, 6: 5, 7: 3}),\n",
4923 " ('x', 'o', 'x', 'o', '.', '.', '.', 'o', 'x'): Counter({4: 7, 5: 4, 6: 1}),\n",
4932 " '.'): Counter({3: 1268, 5: 788, 6: 687, 7: 14, 8: 1807}),\n",
4941 " '.'): Counter({2: 1, 4: 1, 5: 2, 6: 1, 7: 1, 8: 1}),\n",
4950 " '.'): Counter({1: 3, 2: 1, 3: 1, 4: 1, 6: 8, 8: 2}),\n",
4951 " ('x', 'x', 'o', '.', 'x', '.', '.', 'o', 'o'): Counter({3: 1, 5: 1, 6: 1}),\n",
4960 " '.'): Counter({2: 6, 3: 4, 4: 3, 6: 3, 8: 3}),\n",
4961 " ('x', 'o', '.', 'o', '.', 'x', '.', 'x', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
4962 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'o', 'x'): Counter(),\n",
4971 " '.'): Counter({3: 25, 5: 1, 7: 1, 8: 2}),\n",
4980 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 1}),\n",
4981 " ('x', 'x', 'o', 'o', 'x', '.', 'x', 'o', 'o'): Counter({5: 3}),\n",
4990 " 'x'): Counter({2: 3, 3: 5, 4: 4, 6: 4, 7: 4}),\n",
4991 " ('x', 'x', 'o', '.', '.', 'o', 'x', 'o', 'x'): Counter({3: 1, 4: 1}),\n",
5000 " 'x'): Counter({1: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1}),\n",
5009 " 'x'): Counter({1: 1, 3: 2, 5: 1, 6: 3, 7: 1}),\n",
5018 " '.'): Counter({1: 12, 3: 3, 5: 5, 7: 4, 8: 7}),\n",
5027 " 'o'): Counter({2: 1, 3: 1, 5: 1, 7: 20}),\n",
5028 " ('x', 'o', 'x', '.', 'x', '.', 'o', '.', 'o'): Counter({3: 1, 5: 1, 7: 3}),\n",
5037 " 'o'): Counter({1: 3, 3: 3, 4: 7, 6: 3}),\n",
5046 " '.'): Counter({1: 1, 3: 451, 5: 807, 6: 1025, 8: 1897}),\n",
5047 " ('x', 'o', 'o', 'o', 'x', 'x', 'o', 'x', '.'): Counter({8: 413}),\n",
5048 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'o', '.'): Counter({3: 11, 5: 3, 8: 3}),\n",
5049 " ('x', 'x', 'o', 'o', 'x', 'x', '.', '.', 'o'): Counter({6: 1, 7: 3}),\n",
5050 " ('x', 'x', 'o', '.', '.', '.', 'x', 'o', 'o'): Counter({3: 9, 4: 2, 5: 3}),\n",
5059 " '.'): Counter({1: 2, 3: 1, 5: 1, 8: 1}),\n",
5060 " ('o', 'x', '.', 'x', 'o', 'x', '.', 'o', '.'): Counter({2: 1, 6: 2, 8: 3}),\n",
5069 " '.'): Counter({1: 43, 2: 1, 3: 1, 6: 2, 8: 1}),\n",
5070 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', 'o', '.'): Counter({8: 227}),\n",
5079 " '.'): Counter({2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 8: 1}),\n",
5080 " ('x', 'x', 'o', '.', 'o', '.', '.', 'x', 'o'): Counter({3: 1, 5: 1, 6: 1}),\n",
5089 " 'o'): Counter({3: 2, 4: 4, 5: 5, 6: 4}),\n",
5090 " ('x', 'x', 'o', 'o', 'x', 'x', '.', 'o', '.'): Counter({6: 1, 8: 3}),\n",
5099 " '.'): Counter({3: 1, 5: 1, 6: 1, 8: 1}),\n",
5100 " ('x', 'x', '.', '.', 'o', 'o', 'x', '.', 'o'): Counter({2: 17, 3: 7, 7: 1}),\n",
5101 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'x', '.'): Counter({5: 19, 8: 3}),\n",
5102 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'o', '.'): Counter({8: 3}),\n",
5111 " '.'): Counter({1: 442, 2: 5384, 3: 1790, 5: 7, 6: 14740, 7: 8, 8: 1}),\n",
5120 " 'o'): Counter({1: 3, 2: 2, 3: 3, 4: 3, 6: 6}),\n",
5129 " '.'): Counter({2: 106, 3: 2, 5: 2, 6: 1, 7: 1, 8: 1}),\n",
5138 " 'o'): Counter({2: 3, 3: 7, 4: 3, 5: 3, 7: 3}),\n",
5139 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'x', '.'): Counter({6: 22, 8: 3}),\n",
5140 " ('x', 'o', 'x', 'o', 'o', '.', '.', 'x', '.'): Counter({5: 7, 6: 1, 8: 1}),\n",
5149 " 'o'): Counter({3: 1237, 6: 20, 7: 3}),\n",
5158 " 'o'): Counter({1: 2, 2: 3, 3: 3, 6: 3}),\n",
5167 " '.'): Counter({0: 3, 2: 4, 4: 3, 5: 1, 6: 3, 8: 2}),\n",
5168 " ('x', 'o', 'o', 'o', '.', 'x', '.', 'x', '.'): Counter({4: 3, 6: 5, 8: 4}),\n",
5177 " '.'): Counter({4: 3, 5: 1, 6: 8, 8: 1}),\n",
5178 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'x', 'o'): Counter({2: 20}),\n",
5187 " 'o'): Counter({2: 1, 3: 1, 5: 1, 7: 1}),\n",
5196 " 'o'): Counter({1: 5, 2: 3, 3: 2, 4: 16, 5: 2, 6: 11, 7: 4}),\n",
5197 " ('x', 'x', 'o', 'o', 'o', '.', 'x', '.', '.'): Counter({5: 3, 7: 1, 8: 1}),\n",
5198 " ('x', 'x', 'o', 'x', '.', 'o', 'o', '.', '.'): Counter({4: 2, 7: 1, 8: 4}),\n",
5199 " ('x', 'x', '.', 'o', '.', 'x', '.', 'o', 'o'): Counter({2: 5, 4: 3, 6: 3}),\n",
5200 " ('x', 'o', '.', '.', 'o', 'o', 'x', '.', 'x'): Counter({2: 2, 3: 4, 7: 3}),\n",
5209 " '.'): Counter({3: 1, 5: 1, 7: 1, 8: 1}),\n",
5218 " '.'): Counter({4: 1, 5: 1, 6: 1, 8: 1}),\n",
5219 " ('x', 'x', 'o', '.', '.', '.', 'o', 'o', 'x'): Counter({3: 1, 4: 4, 5: 3}),\n",
5228 " '.'): Counter({5: 31, 7: 38, 8: 43}),\n",
5237 " '.'): Counter({2: 4, 3: 745, 5: 519, 7: 305, 8: 2804}),\n",
5238 " ('x', 'o', 'o', '.', '.', 'o', 'x', '.', 'x'): Counter({3: 3, 4: 4, 7: 5}),\n",
5247 " 'o'): Counter({1: 1, 3: 1, 5: 1, 7: 1}),\n",
5256 " '.'): Counter({2: 79, 3: 123, 8: 124}),\n",
5257 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', '.', 'o'): Counter({7: 3}),\n",
5266 " '.'): Counter({4: 4, 5: 9, 7: 1, 8: 5}),\n",
5267 " ('x', 'x', 'o', '.', '.', 'o', 'o', '.', 'x'): Counter({3: 3, 4: 5, 7: 3}),\n",
5276 " '.'): Counter({2: 295, 6: 110, 8: 303}),\n",
5285 " '.'): Counter({2: 1, 5: 1, 6: 1, 8: 1}),\n",
5286 " ('o', 'x', 'o', 'x', '.', 'x', 'o', '.', '.'): Counter({4: 7, 7: 2, 8: 4}),\n",
5295 " 'x'): Counter({2: 4, 4: 14, 6: 3, 7: 2}),\n",
5296 " ('x', 'x', 'o', 'x', '.', 'o', '.', 'o', 'x'): Counter({4: 1, 6: 1}),\n",
5297 " ('x', 'o', '.', '.', '.', 'x', 'o', 'x', 'o'): Counter({2: 3, 3: 4, 4: 5}),\n",
5298 " ('x', 'x', 'o', 'o', '.', 'o', '.', 'x', 'x'): Counter({4: 7, 6: 3}),\n",
5307 " '.'): Counter({2: 2, 3: 20, 5: 2, 7: 11, 8: 1}),\n",
5316 " '.'): Counter({5: 1, 6: 1, 7: 1, 8: 1}),\n",
5317 " ('x', 'x', 'o', 'o', '.', 'o', 'x', '.', 'x'): Counter({4: 24, 7: 1}),\n",
5326 " 'o'): Counter({1: 3, 3: 2, 4: 1, 5: 2}),\n",
5327 " ('x', 'x', '.', 'o', 'o', 'x', 'x', '.', 'o'): Counter({2: 3, 7: 1}),\n",
5328 " ('x', 'o', 'o', '.', 'o', 'x', 'x', '.', '.'): Counter({3: 15, 7: 7, 8: 1}),\n",
5329 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'x', 'o'): Counter({4: 3, 6: 1}),\n",
5330 " ('x', 'x', 'o', '.', '.', 'x', 'o', '.', 'o'): Counter({3: 1, 4: 2, 7: 3}),\n",
5339 " 'o'): Counter({2: 2, 3: 3, 4: 5, 5: 3, 6: 3}),\n",
5340 " ('x', 'x', 'o', 'o', '.', 'x', 'x', '.', 'o'): Counter({4: 3, 7: 3}),\n",
5341 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'x', 'o'): Counter({6: 3}),\n",
5350 " '.'): Counter({2: 1, 3: 1, 6: 1, 8: 1}),\n",
5351 " ('x', 'x', 'o', 'o', '.', 'o', 'x', 'o', 'x'): Counter({4: 9}),\n",
5360 " '.'): Counter({2: 4, 3: 3, 5: 8, 6: 10, 8: 5}),\n",
5361 " ('x', 'x', '.', 'o', 'o', '.', '.', 'x', 'o'): Counter({2: 7, 5: 4, 6: 2}),\n",
5362 " ('x', 'x', '.', 'o', 'x', 'o', 'x', 'o', '.'): Counter({2: 1, 8: 1}),\n",
5371 " '.'): Counter({2: 1, 5: 1, 6: 729, 7: 1913, 8: 2}),\n",
5372 " ('x', 'x', 'o', 'o', '.', 'x', 'o', '.', 'x'): Counter({4: 14, 7: 1}),\n",
5373 " ('x', 'x', '.', 'o', 'x', 'x', 'o', '.', 'o'): Counter({2: 1, 7: 20}),\n",
5382 " '.'): Counter({2: 11, 5: 5, 6: 3, 7: 3, 8: 1}),\n",
5391 " '.'): Counter({1: 1, 3: 1, 5: 1, 6: 36, 8: 1}),\n",
5392 " ('x', 'x', '.', '.', 'o', 'o', 'o', '.', 'x'): Counter({2: 8, 3: 2, 7: 2}),\n",
5401 " '.'): Counter({2: 1, 5: 1, 6: 1, 7: 1, 8: 3}),\n",
5410 " '.'): Counter({0: 4, 2: 3, 4: 3, 6: 3, 7: 2, 8: 3}),\n",
5419 " 'x'): Counter({3: 2, 4: 23, 5: 1, 7: 2}),\n",
5428 " '.'): Counter({0: 1, 2: 1, 3: 1, 4: 68, 5: 2, 6: 2, 7: 1, 8: 8}),\n",
5429 " ('o', 'x', '.', '.', 'x', 'x', 'o', '.', 'o'): Counter({2: 1, 3: 13, 7: 19}),\n",
5438 " '.'): Counter({1: 1, 3: 1, 7: 1, 8: 1}),\n",
5439 " ('x', 'x', 'o', 'x', 'o', 'o', '.', '.', '.'): Counter({6: 14, 7: 1, 8: 1}),\n",
5448 " '.'): Counter({3: 3, 4: 4, 5: 2, 6: 5, 8: 4}),\n",
5449 " ('x', 'o', '.', '.', 'x', 'o', '.', 'x', 'o'): Counter({2: 39, 3: 1, 6: 1}),\n",
5450 " ('x', 'x', '.', 'x', 'o', 'o', '.', 'o', 'x'): Counter({2: 1, 6: 1}),\n",
5451 " ('x', 'x', '.', 'o', '.', 'o', 'x', 'o', 'x'): Counter({2: 1, 4: 21}),\n",
5460 " '.'): Counter({0: 4, 2: 3, 6: 5, 8: 3}),\n",
5469 " '.'): Counter({1: 1, 2: 1, 3: 1, 5: 21, 6: 1, 7: 38, 8: 1}),\n",
5478 " '.'): Counter({1: 5, 3: 4, 6: 6, 8: 5}),\n",
5479 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'x', 'o'): Counter({4: 15}),\n",
5488 " 'o'): Counter({3: 3, 4: 2, 6: 3, 7: 3}),\n",
5497 " '.'): Counter({3: 355, 6: 611, 8: 82}),\n",
5506 " '.'): Counter({3: 1, 4: 5, 5: 2, 7: 3, 8: 6}),\n",
5507 " ('x', 'x', '.', 'o', 'x', 'o', 'x', 'o', 'o'): Counter({2: 251}),\n",
5516 " '.'): Counter({2: 1, 3: 1, 6: 1, 7: 13, 8: 5}),\n",
5517 " ('o', 'x', 'o', 'x', 'o', '.', '.', 'x', '.'): Counter({5: 1, 6: 3, 8: 3}),\n",
5526 " 'o'): Counter({3: 5, 4: 2, 5: 19, 7: 2}),\n",
5535 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 22}),\n",
5536 " ('o', 'x', '.', 'x', '.', 'x', '.', 'o', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
5537 " ('o', 'x', '.', 'o', 'o', 'x', '.', 'x', '.'): Counter({2: 1, 6: 1, 8: 1}),\n",
5546 " '.'): Counter({3: 1, 4: 1, 7: 1, 8: 1}),\n",
5555 " 'o'): Counter({2: 4, 3: 3, 4: 2, 6: 5}),\n",
5564 " '.'): Counter({3: 11, 5: 10, 6: 11, 8: 9}),\n",
5565 " ('x', 'o', 'o', '.', 'o', 'x', '.', 'x', '.'): Counter({3: 2, 6: 9, 8: 3}),\n",
5574 " '.'): Counter({0: 3, 2: 3, 6: 4, 8: 5}),\n",
5583 " 'o'): Counter({2: 95, 3: 1, 7: 141}),\n",
5584 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'o', 'x'): Counter({4: 7}),\n",
5593 " 'o'): Counter({2: 357, 6: 1, 7: 42}),\n",
5594 " ('x', 'x', 'o', 'x', 'x', 'o', '.', 'o', '.'): Counter({6: 2, 8: 27}),\n",
5603 " 'x'): Counter({3: 1, 4: 2, 5: 1, 6: 1}),\n",
5604 " ('x', 'o', 'o', '.', '.', 'x', 'o', 'x', '.'): Counter({3: 2, 4: 4, 8: 3}),\n",
5613 " '.'): Counter({1: 3, 3: 4, 4: 49, 5: 14, 6: 9, 7: 5, 8: 2}),\n",
5622 " '.'): Counter({1: 1, 3: 1, 6: 1, 7: 1, 8: 4130}),\n",
5623 " ('x', 'o', 'x', 'o', 'x', 'o', '.', 'x', '.'): Counter({6: 1, 8: 1}),\n",
5632 " '.'): Counter({0: 4, 2: 3, 4: 2, 6: 3, 8: 3}),\n",
5633 " ('x', 'x', '.', 'x', 'x', 'o', '.', 'o', 'o'): Counter({2: 11, 6: 3}),\n",
5634 " ('x', 'x', 'o', '.', 'o', 'o', 'x', '.', '.'): Counter({3: 12, 7: 3, 8: 1}),\n",
5643 " 'o'): Counter({2: 4, 3: 2, 4: 6, 7: 7}),\n",
5644 " ('o', 'x', 'o', 'x', 'o', 'x', '.', 'x', '.'): Counter({6: 5, 8: 7}),\n",
5645 " ('x', 'o', 'o', '.', 'x', 'x', 'x', '.', 'o'): Counter({3: 3, 7: 1}),\n",
5654 " '.'): Counter({1: 2, 3: 1, 6: 1, 8: 17}),\n",
5655 " ('o', 'x', 'o', 'x', 'x', 'o', '.', '.', '.'): Counter({6: 1, 7: 154, 8: 6}),\n",
5664 " '.'): Counter({1: 1, 3: 410, 8: 275}),\n",
5673 " '.'): Counter({2: 1, 3: 1, 7: 25, 8: 1}),\n",
5674 " ('x', 'o', '.', '.', 'o', 'x', 'o', 'x', '.'): Counter({2: 6, 3: 1, 8: 1}),\n",
5675 " ('x', 'x', '.', 'o', 'o', '.', 'x', '.', 'o'): Counter({2: 14, 5: 4, 7: 1}),\n",
5676 " ('x', 'x', '.', 'o', '.', 'o', 'o', 'x', '.'): Counter({2: 3, 4: 6, 8: 3}),\n",
5685 " '.'): Counter({5: 67, 6: 297, 8: 160}),\n",
5694 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 1}),\n",
5703 " '.'): Counter({2: 4, 3: 1, 4: 1, 6: 1, 7: 1, 8: 1}),\n",
5712 " '.'): Counter({1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
5713 " ('o', 'x', '.', 'o', 'x', 'x', '.', 'o', '.'): Counter({2: 1, 6: 4, 8: 1}),\n",
5722 " 'o'): Counter({2: 3, 3: 151, 5: 104}),\n",
5731 " 'o'): Counter({1: 1, 3: 1, 6: 1, 7: 1}),\n",
5740 " '.'): Counter({4: 15, 5: 1, 7: 2, 8: 1}),\n",
5741 " ('x', 'x', 'o', 'x', '.', '.', 'o', '.', 'o'): Counter({4: 3, 5: 2, 7: 2}),\n",
5742 " ('x', 'x', 'o', '.', '.', 'o', '.', 'o', 'x'): Counter({3: 6, 4: 7, 6: 3}),\n",
5743 " ('x', 'o', 'x', 'o', '.', 'o', 'x', '.', '.'): Counter({4: 7, 7: 1, 8: 3}),\n",
5744 " ('x', 'o', 'o', '.', '.', 'x', 'x', 'o', '.'): Counter({3: 4, 4: 5, 8: 4}),\n",
5745 " ('x', 'x', 'o', 'o', '.', 'o', 'x', '.', '.'): Counter({4: 3, 7: 1, 8: 1}),\n",
5746 " ('x', 'x', 'o', 'o', '.', 'o', '.', '.', 'x'): Counter({4: 3, 6: 1, 7: 1}),\n",
5755 " 'o'): Counter({2: 2, 5: 1, 6: 1, 7: 1}),\n",
5756 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', '.', 'o'): Counter({7: 354}),\n",
5765 " '.'): Counter({2: 4, 3: 2, 4: 1, 8: 11}),\n",
5774 " 'x'): Counter({2: 3, 4: 5, 5: 3, 6: 3, 7: 7}),\n",
5783 " '.'): Counter({2: 5, 3: 4, 4: 6, 6: 3, 8: 3}),\n",
5792 " '.'): Counter({0: 307, 2: 445, 6: 222, 7: 470, 8: 880}),\n",
5801 " 'o'): Counter({2: 2, 3: 3, 4: 2, 6: 2}),\n",
5802 " ('x', 'x', 'o', 'o', 'o', '.', '.', '.', 'x'): Counter({5: 1, 6: 1, 7: 1}),\n",
5803 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'x', 'o'): Counter({5: 3}),\n",
5812 " '.'): Counter({0: 3, 2: 7, 3: 10, 5: 6, 6: 2, 8: 4}),\n",
5813 " ('x', 'x', 'o', 'o', 'x', 'x', 'x', 'o', 'o'): Counter(),\n",
5814 " ('x', 'x', 'o', '.', 'o', 'x', '.', 'x', 'o'): Counter({3: 3, 6: 20}),\n",
5815 " ('x', 'x', 'o', '.', 'o', 'o', 'x', 'o', 'x'): Counter({3: 18}),\n",
5816 " ('x', 'o', 'o', '.', 'x', 'x', 'o', 'x', '.'): Counter({3: 1, 8: 1}),\n",
5817 " ('x', 'x', '.', '.', 'o', 'x', 'o', '.', 'o'): Counter({2: 9, 3: 1, 7: 4}),\n",
5818 " ('x', 'x', 'o', 'o', 'x', '.', 'x', '.', 'o'): Counter({5: 38, 7: 3}),\n",
5827 " '.'): Counter({2: 1, 6: 1, 7: 1, 8: 1}),\n",
5836 " '.'): Counter({2: 1, 3: 1, 4: 1, 5: 1, 7: 1, 8: 1}),\n",
5837 " ('x', '.', 'x', '.', 'o', '.', 'o', 'x', 'o'): Counter({1: 9, 3: 6, 5: 7}),\n",
5846 " 'o'): Counter({1: 4, 3: 4, 4: 1, 5: 2, 7: 5}),\n",
5855 " 'x'): Counter({4: 9, 5: 1, 6: 1, 7: 2}),\n",
5864 " '.'): Counter({4: 4, 5: 2, 6: 4, 7: 3, 8: 5}),\n",
5865 " ('x', 'o', 'o', '.', '.', 'x', '.', 'x', 'o'): Counter({3: 7, 4: 3, 6: 3}),\n",
5874 " '.'): Counter({2: 9, 4: 13, 7: 2, 8: 2}),\n",
5883 " '.'): Counter({3: 1, 5: 1, 7: 1, 8: 19}),\n",
5892 " 'x'): Counter({2: 1, 3: 1, 4: 1, 6: 1}),\n",
5901 " '.'): Counter({5: 160, 7: 307, 8: 395}),\n",
5910 " '.'): Counter({2: 3, 4: 9, 5: 7, 7: 3, 8: 2}),\n",
5919 " '.'): Counter({3: 3, 4: 2, 5: 3, 6: 5, 8: 5}),\n",
5928 " '.'): Counter({0: 2373,\n",
5935 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'o', 'x'): Counter({4: 3, 6: 3}),\n",
5944 " '.'): Counter({1: 1, 3: 1, 6: 1, 8: 1}),\n",
5945 " ('x', 'o', 'x', 'o', 'x', '.', '.', 'x', 'o'): Counter({5: 1, 6: 3}),\n",
5954 " '.'): Counter({2: 4, 3: 2, 4: 6, 5: 6, 8: 4}),\n",
5955 " ('x', 'o', 'x', 'o', '.', '.', 'o', 'x', '.'): Counter({4: 4, 5: 3, 8: 4}),\n",
5956 " ('o', 'x', 'o', 'x', '.', 'o', '.', 'x', '.'): Counter({4: 4, 6: 1, 8: 4}),\n",
5957 " ('x', 'o', '.', '.', 'x', 'o', 'o', 'x', '.'): Counter({2: 6, 3: 9, 8: 492}),\n",
5966 " '.'): Counter({2: 10, 3: 4, 7: 3, 8: 2}),\n",
5975 " '.'): Counter({2: 6, 3: 4, 4: 2, 6: 2, 8: 8}),\n",
5976 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'x', '.'): Counter({2: 10, 8: 2}),\n",
5985 " 'o'): Counter({1: 3, 3: 1, 5: 18, 6: 2}),\n",
5986 " ('x', 'o', 'x', 'o', '.', '.', 'x', '.', 'o'): Counter({4: 4, 5: 3, 7: 3}),\n",
5995 " 'o'): Counter({2: 1, 3: 1, 6: 1, 7: 1}),\n",
6004 " '.'): Counter({2: 2, 3: 2, 4: 14, 8: 1}),\n",
6005 " ('x', 'x', 'o', 'o', '.', 'o', '.', 'x', '.'): Counter({4: 3, 6: 3, 8: 1}),\n",
6006 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'o', '.'): Counter({4: 5, 5: 3, 8: 3}),\n",
6007 " ('x', 'x', 'o', '.', 'o', '.', 'x', '.', 'o'): Counter({3: 14, 5: 4, 7: 1}),\n",
6016 " 'o'): Counter({4: 3, 5: 4, 6: 3, 7: 2}),\n",
6025 " '.'): Counter({3: 2, 4: 1, 5: 2, 6: 6, 8: 3}),\n",
6026 " ('x', 'x', 'o', 'x', 'o', 'x', '.', '.', 'o'): Counter({6: 10, 7: 1}),\n",
6035 " '.'): Counter({2: 1, 6: 20, 7: 3, 8: 1}),\n",
6036 " ('x', 'x', '.', 'o', '.', '.', 'o', 'o', 'x'): Counter({2: 3, 4: 3, 5: 5}),\n",
6037 " ('x', 'x', '.', 'o', '.', 'o', 'o', '.', 'x'): Counter({2: 6, 4: 3, 7: 3}),\n",
6046 " 'o'): Counter({2: 10, 3: 1, 5: 1, 6: 17}),\n",
6047 " ('x', 'o', 'o', '.', 'o', '.', 'x', '.', 'x'): Counter({3: 8, 5: 1, 7: 5}),\n",
6048 " ('x', 'o', 'x', '.', 'x', '.', 'o', 'x', 'o'): Counter({3: 3, 5: 3}),\n",
6057 " '.'): Counter({3: 1, 5: 3, 6: 1, 8: 1}),\n",
6058 " ('x', 'o', 'o', '.', 'x', 'x', 'x', 'o', '.'): Counter({3: 1, 8: 1}),\n",
6067 " '.'): Counter({2: 8, 3: 4, 5: 3, 7: 1, 8: 7}),\n",
6076 " '.'): Counter({2: 1, 3: 1, 4: 4, 6: 1, 7: 1, 8: 1}),\n",
6077 " ('x', 'x', 'o', '.', 'o', '.', '.', 'o', 'x'): Counter({3: 1, 5: 1, 6: 8}),\n",
6078 " ('x', 'o', 'x', 'o', 'x', '.', 'o', 'x', 'o'): Counter({5: 3}),\n",
6079 " ('x', 'x', '.', 'o', 'x', '.', 'x', 'o', 'o'): Counter({2: 3, 5: 1}),\n",
6088 " '.'): Counter({3: 1, 4: 4, 6: 2, 8: 4}),\n",
6097 " '.'): Counter({2: 646, 3: 101, 6: 314, 7: 1527, 8: 56}),\n",
6098 " ('x', 'x', '.', 'x', 'o', 'x', '.', 'o', 'o'): Counter({2: 2, 6: 9}),\n",
6107 " '.'): Counter({1: 4, 3: 2, 4: 4, 8: 3}),\n",
6108 " ('x', 'x', '.', 'o', 'o', 'x', 'o', '.', 'x'): Counter({2: 21, 7: 1}),\n",
6117 " '.'): Counter({0: 2, 2: 3, 4: 4, 6: 2, 8: 4}),\n",
6118 " ('x', 'x', 'o', '.', '.', '.', 'o', 'x', 'o'): Counter({3: 1, 4: 4, 5: 4}),\n",
6127 " 'o'): Counter({1: 6, 3: 1, 5: 1, 7: 12}),\n",
6136 " '.'): Counter({5: 3, 6: 31, 7: 2, 8: 2}),\n",
6137 " ('x', 'o', 'x', 'o', '.', '.', '.', 'x', 'o'): Counter({4: 4, 5: 3, 6: 4}),\n",
6146 " '.'): Counter({0: 1, 2: 1, 3: 1, 5: 1, 6: 5, 8: 4}),\n",
6155 " '.'): Counter({2: 1, 5: 1, 7: 1, 8: 1}),\n",
6164 " '.'): Counter({2: 1, 3: 1, 4: 1, 8: 1}),\n",
6165 " ('x', 'o', 'x', '.', 'o', '.', 'x', '.', 'o'): Counter({3: 9, 5: 1, 7: 3}),\n",
6174 " 'x'): Counter({2: 1, 3: 1, 4: 1, 7: 1}),\n",
6183 " '.'): Counter({2: 18, 3: 1, 5: 1, 6: 1, 8: 1}),\n",
6192 " '.'): Counter({2: 1, 3: 4, 5: 3, 6: 6, 8: 12}),\n",
6193 " ('x', 'x', '.', 'o', '.', 'o', '.', 'x', 'o'): Counter({2: 5, 4: 4, 6: 2}),\n",
6194 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'x', 'o'): Counter({5: 10, 6: 6}),\n",
6203 " '.'): Counter({3: 95, 5: 26, 6: 46, 7: 206, 8: 35}),\n",
6204 " ('x', 'x', 'o', 'x', 'x', '.', '.', 'o', 'o'): Counter({5: 11, 6: 13}),\n",
6213 " '.'): Counter({2: 1, 3: 1, 6: 1, 8: 1}),\n",
6214 " ('x', 'x', '.', '.', 'o', 'o', '.', 'o', 'x'): Counter({2: 9, 3: 12, 6: 2}),\n",
6215 " ('x', 'x', '.', '.', 'o', '.', 'x', 'o', 'o'): Counter({2: 5, 3: 18, 5: 4}),\n",
6224 " '.'): Counter({2: 158, 3: 293, 6: 560, 7: 99, 8: 535}),\n",
6233 " '.'): Counter({1: 1, 2: 1, 3: 1, 6: 1, 7: 1, 8: 1}),\n",
6242 " 'x'): Counter({1: 3, 3: 3, 4: 3, 5: 3, 7: 3}),\n",
6251 " '.'): Counter({2: 5, 3: 13, 6: 1, 8: 4}),\n",
6252 " ('x', 'x', 'o', '.', 'o', 'x', '.', 'o', '.'): Counter({3: 1, 6: 15, 8: 1}),\n",
6261 " '.'): Counter({2: 263, 5: 1, 8: 384}),\n",
6270 " '.'): Counter({2: 11, 3: 2, 4: 3, 5: 2, 8: 7}),\n",
6279 " 'o'): Counter({2: 4, 3: 1, 4: 1, 5: 3, 6: 1, 7: 3}),\n",
6288 " '.'): Counter({1: 1, 3: 1, 4: 5, 5: 2, 6: 1, 8: 13}),\n",
6297 " '.'): Counter({2: 4, 3: 4, 6: 5, 8: 10}),\n",
6298 " ('x', 'x', '.', 'x', '.', 'o', '.', 'o', 'o'): Counter({2: 8, 4: 3, 6: 4}),\n",
6307 " '.'): Counter({0: 25,\n",
6316 " ('x', 'x', '.', 'o', 'x', 'x', '.', 'o', 'o'): Counter({2: 3, 6: 24}),\n",
6325 " 'o'): Counter({2: 2, 4: 1, 6: 1, 7: 1}),\n",
6334 " '.'): Counter({5: 141, 6: 10, 8: 8}),\n",
6343 " '.'): Counter({2: 1, 3: 11, 7: 3, 8: 3}),\n",
6352 " '.'): Counter({3: 4, 4: 3, 6: 4, 7: 1, 8: 4}),\n",
6353 " ('x', 'o', 'x', 'o', 'o', '.', 'x', '.', 'x'): Counter({5: 5, 7: 22}),\n",
6354 " ('x', 'x', 'o', 'o', 'o', '.', 'x', '.', 'x'): Counter({5: 32, 7: 3}),\n",
6363 " 'o'): Counter({1: 1, 2: 622, 3: 1, 6: 1, 7: 1}),\n",
6372 " '.'): Counter({2: 1, 3: 1, 6: 1, 8: 1}),\n",
6381 " 'x'): Counter({1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1}),\n",
6390 " 'x'): Counter({2: 1, 4: 1, 5: 1, 6: 1}),\n",
6399 " '.'): Counter({1: 1, 3: 1, 5: 1, 8: 28}),\n",
6408 " 'o'): Counter({2: 1, 3: 128, 6: 306}),\n",
6417 " '.'): Counter({2: 2, 3: 1, 4: 1, 5: 1, 6: 1, 8: 1}),\n",
6426 " '.'): Counter({3: 3, 4: 6, 5: 2, 7: 3, 8: 4}),\n",
6427 " ('x', 'o', 'x', 'o', '.', 'o', 'x', 'o', 'x'): Counter({4: 3}),\n",
6436 " '.'): Counter({2: 1, 3: 160, 5: 8, 6: 123, 8: 5}),\n",
6437 " ('x', 'o', '.', 'o', 'o', 'x', '.', 'x', '.'): Counter({2: 4, 6: 4, 8: 7}),\n",
6446 " '.'): Counter({2: 1, 3: 1, 4: 49, 5: 2, 6: 7, 7: 8, 8: 3}),\n",
6455 " '.'): Counter({3: 32, 5: 1, 7: 21, 8: 1}),\n",
6456 " ('x', 'o', '.', '.', 'o', 'x', '.', 'x', 'o'): Counter({2: 3, 3: 5, 6: 5}),\n",
6465 " '.'): Counter({2: 2, 3: 2, 4: 2, 8: 3}),\n",
6474 " '.'): Counter({2: 2, 4: 1, 6: 1, 8: 3}),\n",
6475 " ('x', 'x', '.', 'o', 'o', 'x', '.', '.', 'o'): Counter({2: 4, 6: 3, 7: 5}),\n",
6484 " 'x'): Counter({2: 2, 4: 1, 5: 1, 7: 1}),\n",
6493 " '.'): Counter({1: 1, 3: 1, 6: 32, 7: 1, 8: 1}),\n",
6494 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'o', '.'): Counter({4: 3, 6: 3, 8: 3}),\n",
6495 " ('x', 'x', 'o', 'o', '.', '.', 'o', 'x', '.'): Counter({4: 9, 5: 2, 8: 1}),\n",
6504 " '.'): Counter({1: 28, 2: 37, 3: 44, 6: 213, 8: 343}),\n",
6513 " '.'): Counter({2: 3, 4: 4, 5: 4, 6: 3, 8: 6}),\n",
6522 " 'o'): Counter({1: 1, 3: 1, 4: 2, 5: 4, 6: 2}),\n",
6531 " '.'): Counter({2: 2, 3: 291, 8: 543}),\n",
6532 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'x', 'o'): Counter({2: 2, 4: 1}),\n",
6541 " 'o'): Counter({1: 1, 3: 1196, 6: 8}),\n",
6550 " 'o'): Counter({2: 6, 3: 6, 4: 1, 5: 1, 6: 8}),\n",
6551 " ('x', 'x', '.', 'o', '.', '.', 'o', 'x', 'o'): Counter({2: 4, 4: 5, 5: 4}),\n",
6552 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'o', '.'): Counter({2: 13, 6: 5, 8: 6}),\n",
6553 " ('o', 'x', 'o', 'x', '.', 'x', 'o', 'x', 'o'): Counter({4: 3}),\n",
6562 " '.'): Counter({5: 17, 7: 11, 8: 487}),\n",
6571 " '.'): Counter({4: 1, 6: 7, 7: 2, 8: 4}),\n",
6580 " '.'): Counter({3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
6581 " ('x', 'x', '.', '.', 'o', 'o', 'x', 'o', 'x'): Counter({2: 1, 3: 24}),\n",
6590 " 'o'): Counter({2: 7, 3: 6, 5: 1, 6: 3, 7: 5}),\n",
6599 " 'o'): Counter({2: 3, 4: 3, 5: 3, 6: 2}),\n",
6600 " ('x', 'x', 'o', 'x', 'x', 'o', 'o', '.', '.'): Counter({7: 1, 8: 20}),\n",
6609 " '.'): Counter({4: 3, 6: 3, 7: 2, 8: 3}),\n",
6610 " ('x', 'x', '.', 'o', '.', 'x', 'o', '.', 'o'): Counter({2: 4, 4: 3, 7: 4}),\n",
6619 " '.'): Counter({2: 4, 3: 1, 4: 4, 7: 2, 8: 6}),\n",
6620 " ('x', 'o', 'x', 'o', 'o', '.', 'x', '.', '.'): Counter({5: 1, 7: 1, 8: 1}),\n",
6629 " '.'): Counter({3: 7, 4: 3, 7: 2, 8: 9}),\n",
6630 " ('x', 'x', '.', '.', 'o', '.', 'o', 'o', 'x'): Counter({2: 10, 3: 1, 5: 3}),\n",
6639 " 'o'): Counter({2: 7, 3: 4, 4: 1, 6: 1}),\n",
6648 " '.'): Counter({3: 151, 5: 103, 8: 306}),\n",
6657 " '.'): Counter({1: 3, 2: 2, 3: 5, 4: 3, 6: 7, 8: 1}),\n",
6658 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'o', 'x'): Counter({3: 3, 5: 1}),\n",
6659 " ('x', 'x', '.', 'o', 'x', 'o', 'x', '.', 'o'): Counter({2: 24, 7: 1}),\n",
6668 " '.'): Counter({2: 6, 6: 1, 7: 1, 8: 1}),\n",
6677 " 'o'): Counter({2: 1, 3: 1, 5: 5, 6: 1}),\n",
6686 " 'o'): Counter({3: 1, 4: 1, 5: 1, 7: 1}),\n",
6687 " ('x', 'x', 'o', 'o', 'o', 'x', '.', '.', '.'): Counter({6: 3, 7: 2, 8: 2}),\n",
6696 " 'x'): Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 9}),\n",
6705 " '.'): Counter({2: 1, 3: 26, 7: 2, 8: 1}),\n",
6706 " ('x', 'x', 'o', 'x', 'x', '.', 'o', '.', 'o'): Counter({5: 11, 7: 3}),\n",
6707 " ('x', 'x', 'o', 'o', '.', 'x', '.', '.', 'o'): Counter({4: 3, 6: 3, 7: 4}),\n",
6716 " '.'): Counter({3: 1, 4: 1, 6: 1, 8: 1}),\n",
6717 " ('x', 'x', 'o', '.', 'o', 'o', '.', 'x', '.'): Counter({3: 1, 6: 1, 8: 1}),\n",
6726 " '.'): Counter({2: 2, 3: 4, 4: 11, 5: 1, 8: 1}),\n",
6735 " '.'): Counter({2: 2, 3: 4, 4: 12, 6: 3, 7: 2, 8: 1}),\n",
6744 " '.'): Counter({6: 69, 7: 176, 8: 75}),\n",
6745 " ('x', 'o', 'x', 'o', 'x', '.', 'o', 'x', '.'): Counter({5: 1, 8: 3}),\n",
6754 " 'x'): Counter({2: 22, 3: 1, 5: 1, 7: 1}),\n",
6755 " ('o', 'x', '.', 'x', 'x', 'o', '.', '.', 'o'): Counter({2: 63, 6: 2, 7: 63}),\n",
6764 " 'o'): Counter({2: 8, 3: 1, 4: 2, 5: 1, 7: 2}),\n",
6765 " ('x', 'x', 'o', 'x', '.', 'o', 'o', '.', 'x'): Counter({4: 17, 7: 1}),\n",
6774 " '.'): Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
6775 " ('x', 'o', 'o', '.', 'x', 'x', 'o', 'x', 'o'): Counter({3: 1272}),\n",
6776 " ('x', 'x', 'o', 'x', 'o', 'o', '.', 'x', '.'): Counter({6: 8, 8: 7}),\n",
6785 " 'o'): Counter({2: 2, 3: 4, 4: 4, 6: 4, 7: 5}),\n",
6786 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'o', 'x'): Counter({2: 3, 6: 1}),\n",
6795 " '.'): Counter({5: 10, 6: 11, 8: 586}),\n",
6796 " ('o', 'o', '.', 'o', 'x', 'x', '.', 'x', '.'): Counter({2: 1, 6: 1, 8: 1}),\n",
6797 " ('x', 'x', 'o', 'o', '.', 'o', 'x', 'x', '.'): Counter({4: 6, 8: 13}),\n",
6806 " 'o'): Counter({1: 1, 2: 2, 3: 4, 6: 19}),\n",
6807 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'o', '.'): Counter({5: 1, 6: 7, 8: 2}),\n",
6816 " '.'): Counter({1: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
6825 " 'x'): Counter({4: 1, 5: 1, 6: 1, 7: 1}),\n",
6826 " ('x', 'x', 'o', 'x', 'o', 'o', '.', 'o', 'x'): Counter({6: 31}),\n",
6835 " 'x'): Counter({3: 10, 5: 8, 6: 30, 7: 7}),\n",
6844 " '.'): Counter({2: 1, 3: 1, 4: 1, 8: 2}),\n",
6845 " ('x', 'x', 'o', 'o', 'x', '.', 'x', 'o', '.'): Counter({5: 1, 8: 3}),\n",
6846 " ('x', 'o', 'o', '.', '.', 'x', 'x', '.', 'o'): Counter({3: 3, 4: 5, 7: 4}),\n",
6855 " '.'): Counter({2: 11, 6: 6, 7: 4, 8: 4}),\n",
6864 " 'o'): Counter({2: 174, 3: 455, 7: 1}),\n",
6865 " ('x', 'o', 'x', 'o', '.', 'o', 'x', '.', 'x'): Counter({4: 14, 7: 1}),\n",
6874 " '.'): Counter({3: 1, 5: 1, 6: 1, 8: 15}),\n",
6875 " ('x', 'o', 'o', '.', 'x', '.', 'x', '.', 'o'): Counter({3: 726, 5: 5, 7: 1}),\n",
6884 " '.'): Counter({2: 3, 4: 4, 6: 4, 8: 2}),\n",
6893 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 1}),\n",
6902 " 'x'): Counter({2: 3, 3: 2, 4: 8, 5: 4, 7: 4}),\n",
6903 " ('x', 'x', '.', '.', 'o', 'o', 'x', 'o', '.'): Counter({2: 7, 3: 6, 8: 2}),\n",
6912 " '.'): Counter({2: 5, 4: 1, 7: 1, 8: 1}),\n",
6913 " ('x', 'x', 'o', 'o', 'x', 'o', 'x', '.', '.'): Counter({7: 1, 8: 22}),\n",
6914 " ('x', 'x', 'o', 'x', '.', 'x', 'o', 'o', '.'): Counter({4: 3, 8: 10}),\n",
6915 " ('x', 'x', 'o', 'o', '.', '.', '.', 'o', 'x'): Counter({4: 5, 5: 4, 6: 3}),\n",
6916 " ('o', 'x', 'o', 'x', '.', 'x', 'o', 'x', '.'): Counter({4: 5, 8: 3}),\n",
6917 " ('x', 'x', '.', 'o', 'o', '.', '.', 'o', 'x'): Counter({2: 11, 5: 5, 6: 2}),\n",
6918 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'o', 'x'): Counter({4: 3, 5: 1}),\n",
6927 " '.'): Counter({2: 1, 3: 1, 4: 8, 5: 3, 6: 5, 8: 2}),\n",
6936 " 'o'): Counter({2: 23, 3: 1, 6: 1, 7: 2}),\n",
6937 " ('o', 'x', '.', 'o', 'x', 'x', '.', '.', 'o'): Counter({2: 1, 6: 20, 7: 26}),\n",
6946 " '.'): Counter({3: 1, 7: 182, 8: 177}),\n",
6947 " ('x', 'x', '.', 'o', '.', 'o', '.', 'o', 'x'): Counter({2: 6, 4: 6, 6: 3}),\n",
6956 " 'x'): Counter({2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1}),\n",
6965 " '.'): Counter({2: 4, 4: 3, 6: 3, 7: 5, 8: 5}),\n",
6966 " ('x', 'x', 'o', 'x', 'o', 'o', '.', '.', 'x'): Counter({6: 18, 7: 1}),\n",
6975 " 'x'): Counter({3: 1, 4: 13, 6: 1, 7: 1}),\n",
6984 " 'o'): Counter({2: 2, 4: 3, 6: 4, 7: 2}),\n",
6993 " '.'): Counter({0: 15, 2: 6, 5: 1, 6: 1, 7: 1, 8: 7}),\n",
6994 " ('o', 'x', '.', '.', 'x', 'x', 'o', 'o', '.'): Counter({2: 1, 3: 22, 8: 1}),\n",
6995 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'o', 'x'): Counter({5: 1, 6: 25}),\n",
6996 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', '.', '.'): Counter({7: 1, 8: 1}),\n",
7005 " 'o'): Counter({1: 3, 3: 4, 4: 5, 6: 4, 7: 3}),\n",
7006 " ('x', 'o', '.', 'o', 'x', 'x', '.', 'x', 'o'): Counter({2: 3, 6: 3}),\n",
7015 " '.'): Counter({4: 7, 5: 4, 6: 2, 8: 1}),\n",
7024 " '.'): Counter({3: 1, 6: 1, 7: 2, 8: 20}),\n",
7025 " ('x', 'o', 'x', 'o', '.', 'o', '.', 'x', '.'): Counter({4: 3, 6: 3, 8: 2}),\n",
7026 " ('x', 'o', 'o', '.', 'x', '.', '.', 'x', 'o'): Counter({3: 1, 5: 11, 6: 1}),\n",
7035 " 'o'): Counter({2: 6, 3: 1, 5: 3, 6: 2}),\n",
7036 " ('x', 'o', 'x', '.', 'o', '.', 'o', 'x', '.'): Counter({3: 3, 5: 5, 8: 4}),\n",
7045 " '.'): Counter({1: 3, 3: 3, 4: 4, 7: 5, 8: 3}),\n",
7046 " ('x', 'x', '.', 'o', 'o', '.', 'x', 'o', '.'): Counter({2: 9, 5: 3, 8: 1}),\n",
7047 " ('x', 'x', 'o', '.', 'x', 'o', 'x', 'o', '.'): Counter({3: 1, 8: 24}),\n",
7048 " ('x', 'x', '.', 'o', 'x', '.', '.', 'o', 'o'): Counter({2: 419, 5: 1, 6: 5}),\n",
7049 " ('o', 'x', 'o', 'x', 'x', '.', '.', '.', 'o'): Counter({5: 47, 6: 1, 7: 80}),\n",
7058 " '.'): Counter({2: 9, 4: 4, 6: 2, 7: 2, 8: 3}),\n",
7067 " '.'): Counter({2: 1, 3: 1, 7: 1, 8: 1}),\n",
7068 " ('x', 'x', 'o', '.', 'x', 'x', 'o', 'o', '.'): Counter({3: 1, 8: 24}),\n",
7077 " '.'): Counter({2: 4, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
7078 " ('x', 'x', '.', 'o', 'o', '.', 'o', '.', 'x'): Counter({2: 9, 5: 2, 7: 1}),\n",
7079 " ('x', 'o', 'x', '.', '.', '.', 'x', 'o', 'o'): Counter({3: 5, 4: 5, 5: 3}),\n",
7088 " 'o'): Counter({2: 8, 4: 4, 5: 3, 6: 4, 7: 2}),\n",
7089 " ('x', 'x', 'o', '.', '.', 'x', 'o', 'o', '.'): Counter({3: 1, 4: 2, 8: 1}),\n",
7098 " '.'): Counter({2: 1, 3: 1, 7: 1, 8: 1}),\n",
7099 " ('x', 'x', '.', '.', 'o', 'x', '.', 'o', 'o'): Counter({2: 16, 3: 1, 6: 11}),\n",
7100 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'x', '.'): Counter({4: 9, 8: 1}),\n",
7101 " ('x', 'x', 'o', '.', 'x', '.', 'o', 'o', '.'): Counter({3: 1, 5: 1, 8: 125}),\n",
7110 " '.'): Counter({2: 1, 3: 1, 5: 1, 6: 2, 8: 1}),\n",
7111 " ('x', 'x', '.', 'o', 'o', '.', 'o', 'x', '.'): Counter({2: 10, 5: 4, 8: 1}),\n",
7120 " 'o'): Counter({2: 18, 4: 1, 5: 2, 7: 1}),\n",
7129 " '.'): Counter({3: 5, 4: 6, 6: 4, 7: 4, 8: 2}),\n",
7138 " '.'): Counter({3: 2, 4: 4, 5: 3, 6: 5, 7: 2, 8: 3}),\n",
7139 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'o', 'x'): Counter({2: 12}),\n",
7140 " ('x', 'x', 'o', 'o', '.', '.', '.', 'x', 'o'): Counter({4: 3, 5: 3, 6: 1}),\n",
7141 " ('x', 'o', 'o', '.', 'x', 'x', 'x', 'o', 'o'): Counter({3: 504}),\n",
7142 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'o', 'x'): Counter({5: 3}),\n",
7151 " '.'): Counter({1: 1, 3: 1, 4: 1, 5: 1, 6: 1, 8: 1}),\n",
7160 " '.'): Counter({1: 12, 2: 11, 3: 2, 6: 1, 7: 33, 8: 2}),\n",
7169 " '.'): Counter({2: 2, 4: 1, 6: 1, 8: 2}),\n",
7178 " 'o'): Counter({2: 1, 3: 452, 7: 12}),\n",
7187 " 'o'): Counter({1: 1, 3: 606, 7: 692}),\n",
7196 " '.'): Counter({2: 3, 4: 3, 6: 3, 8: 3}),\n",
7205 " '.'): Counter({4: 3, 5: 2, 6: 4, 8: 2}),\n",
7214 " 'o'): Counter({2: 2, 3: 1, 4: 5, 6: 4, 7: 4}),\n",
7215 " ('x', 'x', 'o', 'o', 'o', '.', '.', 'x', 'x'): Counter({5: 10, 6: 14}),\n",
7224 " 'o'): Counter({1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1}),\n",
7233 " '.'): Counter({2: 4, 3: 1, 6: 4, 8: 1}),\n",
7242 " 'x'): Counter({2: 1, 3: 1, 5: 1, 7: 36}),\n",
7243 " ('o', 'x', '.', 'x', 'x', 'o', '.', 'o', '.'): Counter({2: 14, 6: 8, 8: 3}),\n",
7252 " '.'): Counter({2: 1, 4: 1, 6: 2, 8: 2}),\n",
7261 " '.'): Counter({1: 12, 3: 1, 4: 1, 5: 2, 8: 9}),\n",
7262 " ('x', 'x', 'o', 'o', '.', 'o', 'o', 'x', 'x'): Counter({4: 7}),\n",
7263 " ('x', 'x', 'o', 'x', 'o', '.', '.', '.', 'o'): Counter({5: 1, 6: 13, 7: 1}),\n",
7264 " ('x', 'x', 'o', 'x', 'o', 'x', '.', 'o', '.'): Counter({6: 9, 8: 1}),\n",
7273 " '.'): Counter({2: 3, 4: 1, 6: 4, 7: 4, 8: 3}),\n",
7274 " ('x', 'x', 'o', '.', 'o', 'o', 'x', 'x', '.'): Counter({3: 3, 8: 11}),\n",
7275 " ('x', 'x', 'o', 'x', 'o', 'x', '.', 'o', 'o'): Counter({6: 10}),\n",
7276 " ('x', 'x', '.', 'o', '.', 'o', 'x', 'o', '.'): Counter({2: 3, 4: 4, 8: 3}),\n",
7277 " ('x', 'x', '.', '.', 'o', 'o', 'o', 'x', '.'): Counter({2: 6, 3: 1, 8: 1}),\n",
7286 " '.'): Counter({3: 3, 4: 4, 6: 3, 8: 4}),\n",
7295 " '.'): Counter({3: 1, 5: 1, 6: 1, 7: 2, 8: 1}),\n",
7296 " ('x', 'x', 'o', 'o', 'o', 'x', '.', '.', 'x'): Counter({6: 28, 7: 3}),\n",
7305 " '.'): Counter({3: 1, 5: 1, 7: 1, 8: 1}),\n",
7306 " ('x', 'x', '.', 'o', 'o', '.', 'x', 'o', 'x'): Counter({2: 3, 5: 49}),\n",
7307 " ('x', 'x', 'o', 'o', '.', 'x', 'o', '.', '.'): Counter({4: 6, 7: 3, 8: 2}),\n",
7316 " 'x'): Counter({3: 1, 4: 1, 5: 1, 7: 1}),\n",
7325 " '.'): Counter({2: 1, 4: 10, 6: 1, 8: 1}),\n",
7326 " ('x', '.', 'o', '.', '.', 'x', 'o', 'x', 'o'): Counter({1: 4, 3: 4, 4: 3}),\n",
7335 " 'o'): Counter({2: 10, 4: 3, 6: 7, 7: 1}),\n",
7336 " ('x', 'x', 'o', 'o', '.', '.', 'o', 'x', 'x'): Counter({4: 14, 5: 1}),\n",
7337 " ('x', 'x', 'o', '.', '.', 'x', '.', 'o', 'o'): Counter({3: 2, 4: 3, 6: 4}),\n",
7338 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'x', 'o'): Counter(),\n",
7347 " '.'): Counter({2: 163, 3: 1, 8: 254}),\n",
7356 " '.'): Counter({2: 371, 7: 385, 8: 140}),\n",
7365 " '.'): Counter({1: 1, 2: 1, 3: 16, 6: 4, 7: 1, 8: 1}),\n",
7374 " '.'): Counter({4: 7, 5: 3, 6: 3, 7: 2, 8: 3}),\n",
7383 " '.'): Counter({3: 1, 4: 33, 5: 1, 8: 1}),\n",
7392 " 'o'): Counter({2: 3, 4: 3, 5: 3, 6: 3, 7: 3}),\n",
7393 " ('x', 'x', 'o', '.', '.', 'o', 'o', 'x', '.'): Counter({3: 2, 4: 4, 8: 5}),\n",
7402 " '.'): Counter({0: 3, 2: 2, 5: 1, 6: 1, 8: 1}),\n",
7411 " 'x'): Counter({2: 1, 3: 1, 4: 1, 7: 1}),\n",
7420 " '.'): Counter({3: 230, 7: 1, 8: 300}),\n",
7429 " 'o'): Counter({2: 3, 3: 2, 4: 1, 6: 2, 7: 1}),\n",
7438 " '.'): Counter({2: 1, 3: 155, 5: 1, 7: 244, 8: 1}),\n",
7447 " '.'): Counter({3: 8, 4: 8, 5: 4, 7: 3, 8: 4}),\n",
7456 " 'o'): Counter({2: 1, 3: 1, 4: 1, 5: 1}),\n",
7457 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'x', 'o'): Counter({3: 3, 5: 10}),\n",
7458 " ('x', 'x', 'o', '.', '.', 'x', 'x', 'o', 'o'): Counter({3: 3, 4: 1}),\n",
7459 " ('x', 'x', 'o', '.', 'x', '.', 'o', '.', 'o'): Counter({3: 1, 5: 1, 7: 112}),\n",
7468 " '.'): Counter({2: 13, 3: 5, 6: 1, 8: 2}),\n",
7469 " ('x', 'x', '.', 'o', 'o', 'x', 'x', 'o', '.'): Counter({2: 3, 8: 1}),\n",
7470 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'x', 'o'): Counter({4: 3, 5: 13}),\n",
7479 " '.'): Counter({3: 427, 7: 696, 8: 139}),\n",
7480 " ('x', 'x', 'o', 'x', '.', 'o', '.', 'o', '.'): Counter({4: 3, 6: 3, 8: 6}),\n",
7489 " '.'): Counter({0: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 10}),\n",
7498 " '.'): Counter({2: 1, 3: 1, 7: 1, 8: 1}),\n",
7499 " ('x', 'x', 'o', 'o', 'x', 'x', '.', 'o', 'o'): Counter({6: 3}),\n",
7508 " '.'): Counter({2: 8, 3: 3, 4: 5, 7: 3, 8: 4}),\n",
7517 " '.'): Counter({2: 1, 3: 1, 4: 1, 5: 1, 7: 1, 8: 1}),\n",
7526 " '.'): Counter({2: 213, 6: 423, 8: 58}),\n",
7527 " ('x', 'x', 'o', '.', '.', 'x', 'o', 'x', 'o'): Counter({3: 2, 4: 6}),\n",
7528 " ('x', 'x', 'o', 'x', '.', 'o', 'o', 'o', 'x'): Counter({4: 7}),\n",
7537 " '.'): Counter({3: 1, 4: 1, 5: 1, 8: 3}),\n",
7538 " ('x', 'x', '.', 'x', 'o', 'o', '.', 'o', '.'): Counter({2: 6, 6: 3, 8: 4}),\n",
7539 " ('x', 'x', '.', '.', '.', 'o', 'o', 'o', 'x'): Counter({2: 4, 3: 3, 4: 8}),\n",
7540 " ('x', 'x', 'o', 'o', 'x', 'o', 'x', 'o', '.'): Counter({8: 218}),\n",
7541 " ('x', 'o', 'x', 'o', 'o', '.', '.', '.', 'x'): Counter({5: 14, 6: 1, 7: 1}),\n",
7542 " ('x', 'x', '.', '.', 'o', 'x', 'x', 'o', 'o'): Counter({2: 1, 3: 1}),\n",
7551 " '.'): Counter({3: 1, 5: 1, 6: 1, 8: 3}),\n",
7560 " 'x'): Counter({2: 7, 3: 11, 6: 2, 7: 1}),\n",
7569 " '.'): Counter({5: 5, 6: 21, 8: 574}),\n",
7578 " '.'): Counter({3: 1, 4: 1, 5: 1, 8: 1}),\n",
7587 " '.'): Counter({1: 281, 3: 123, 5: 761, 7: 647, 8: 1751}),\n",
7596 " '.'): Counter({2: 2, 3: 4, 4: 3, 6: 1, 8: 5}),\n",
7605 " '.'): Counter({2: 277, 3: 1980, 6: 1, 7: 1, 8: 1}),\n",
7614 " '.'): Counter({1: 1, 3: 1, 4: 1, 5: 1, 7: 1, 8: 1}),\n",
7623 " '.'): Counter({0: 7, 2: 9, 4: 22, 5: 1, 6: 13, 7: 6, 8: 1}),\n",
7632 " '.'): Counter({2: 9, 3: 3, 5: 1, 8: 4}),\n",
7641 " 'o'): Counter({2: 1, 3: 426, 5: 70, 6: 482, 7: 6}),\n",
7650 " '.'): Counter({1: 1, 2: 2, 3: 2, 6: 2, 8: 5}),\n",
7659 " '.'): Counter({2: 2, 3: 1, 4: 1, 6: 1, 8: 1}),\n",
7660 " ('x', 'o', '.', '.', 'x', 'x', 'o', 'x', 'o'): Counter({2: 1, 3: 3}),\n",
7669 " '.'): Counter({2: 412, 5: 64, 6: 205, 7: 141, 8: 176}),\n",
7670 " ('x', '.', 'o', '.', 'x', 'x', 'o', 'x', 'o'): Counter({1: 1, 3: 1}),\n",
7679 " '.'): Counter({2: 3, 5: 38, 7: 1, 8: 1}),\n",
7688 " 'o'): Counter({2: 1, 3: 3, 4: 3, 7: 1}),\n",
7689 " ('x', 'x', 'o', '.', 'o', 'x', 'x', 'o', '.'): Counter({3: 3, 8: 1}),\n",
7690 " ('x', 'x', 'o', 'o', '.', '.', 'x', '.', 'o'): Counter({4: 3, 5: 3, 7: 2}),\n",
7691 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', '.', '.'): Counter({7: 3, 8: 3}),\n",
7700 " 'o'): Counter({1: 1, 3: 2, 5: 2811, 6: 2, 7: 1}),\n",
7701 " ('x', 'x', '.', '.', 'x', 'o', 'x', 'o', 'o'): Counter({2: 21, 3: 1}),\n",
7710 " 'x'): Counter({3: 2, 4: 4, 5: 5, 6: 4, 7: 4}),\n",
7711 " ('x', 'x', 'o', '.', 'x', 'x', '.', 'o', 'o'): Counter({3: 3, 6: 16}),\n",
7712 " ('x', 'o', 'x', '.', '.', '.', 'o', 'x', 'o'): Counter({3: 3, 4: 3, 5: 3}),\n",
7721 " 'o'): Counter({1: 1, 2: 2, 3: 2, 4: 2, 6: 9, 7: 2}),\n",
7722 " ('x', 'o', 'o', 'o', 'x', 'x', '.', 'x', 'o'): Counter({6: 3}),\n",
7723 " ('x', 'x', 'o', '.', 'o', 'x', 'x', 'o', 'o'): Counter({3: 43}),\n",
7732 " 'x'): Counter({2: 6, 5: 16, 6: 1, 7: 2}),\n",
7741 " '.'): Counter({1: 17, 3: 1, 5: 1, 6: 3, 8: 2}),\n",
7750 " '.'): Counter({3: 460, 5: 110, 8: 403}),\n",
7751 " ('x', 'x', 'o', '.', 'o', 'o', 'x', '.', 'x'): Counter({3: 22, 7: 1}),\n",
7752 " ('x', 'x', '.', 'o', '.', 'o', 'x', '.', 'o'): Counter({2: 5, 4: 4, 7: 3}),\n",
7753 " ('o', 'x', '.', '.', 'o', 'x', 'o', 'x', '.'): Counter({2: 1, 3: 1, 8: 1}),\n",
7762 " 'o'): Counter({2: 1, 3: 1, 5: 1, 7: 1}),\n",
7763 " ('o', 'x', 'o', 'x', '.', 'x', '.', 'o', '.'): Counter({4: 6, 6: 3, 8: 3}),\n",
7772 " '.'): Counter({3: 1, 4: 3, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
7781 " '.'): Counter({4: 5, 5: 3, 7: 4, 8: 3}),\n",
7790 " '.'): Counter({2: 2, 3: 5, 4: 4, 8: 3}),\n",
7791 " ('x', 'x', '.', 'o', 'o', 'x', 'o', '.', '.'): Counter({2: 9, 7: 3, 8: 2}),\n",
7800 " 'o'): Counter({2: 46, 5: 1, 7: 501}),\n",
7809 " '.'): Counter({1: 39, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
7818 " '.'): Counter({5: 1, 6: 1, 7: 1, 8: 1}),\n",
7827 " '.'): Counter({2: 1, 6: 1, 7: 1, 8: 1}),\n",
7828 " ('x', 'x', 'o', 'o', 'o', '.', '.', 'x', '.'): Counter({5: 2, 6: 2, 8: 1}),\n",
7829 " ('x', 'x', '.', '.', '.', 'o', 'o', 'x', 'o'): Counter({2: 3, 3: 1, 4: 6}),\n",
7830 " ('x', 'x', 'o', '.', 'o', 'o', '.', '.', 'x'): Counter({3: 1, 6: 5, 7: 1}),\n",
7831 " ('x', 'x', 'o', 'x', '.', '.', '.', 'o', 'o'): Counter({4: 2, 5: 3, 6: 3}),\n",
7840 " '.'): Counter({2: 3, 3: 5, 4: 7, 7: 3, 8: 4}),\n",
7849 " '.'): Counter({1: 1, 3: 1, 4: 3, 6: 5, 7: 4, 8: 2}),\n",
7858 " 'o'): Counter({2: 6, 3: 5, 4: 2, 7: 1}),\n",
7859 " ('x', 'o', '.', '.', 'o', 'x', 'x', '.', 'o'): Counter({2: 1, 3: 14, 7: 4}),\n",
7868 " '.'): Counter({2: 3, 3: 3, 4: 5, 6: 4, 8: 4}),\n",
7869 " ('x', 'x', 'o', '.', '.', 'o', 'x', 'o', '.'): Counter({3: 4, 4: 1, 8: 6})},\n",
7870 " {('x', '.', 'o', '.', 'o', 'x', '.', 'x', 'o'): Counter({1: 1, 3: 1, 6: 4}),\n",
7879 " '.'): Counter({3: 3, 4: 3, 5: 3, 6: 5, 8: 3}),\n",
7880 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'o', 'x'): Counter({2: 1, 4: 3}),\n",
7889 " '.'): Counter({1: 17, 2: 29, 3: 36, 6: 25, 8: 12}),\n",
7898 " 'o'): Counter({2: 1, 3: 1, 6: 1, 7: 1}),\n",
7907 " '.'): Counter({2: 20, 3: 532, 4: 78, 7: 130, 8: 261}),\n",
7908 " ('x', 'x', '.', '.', 'o', 'x', 'o', 'x', 'o'): Counter({2: 12, 3: 1}),\n",
7917 " '.'): Counter({2: 2, 4: 4, 5: 3, 8: 3}),\n",
7926 " 'o'): Counter({2: 2, 3: 2, 4: 2, 5: 4}),\n",
7935 " '.'): Counter({2: 23, 3: 165, 4: 4422, 5: 56, 6: 432, 7: 203, 8: 34}),\n",
7944 " '.'): Counter({5: 1, 6: 1, 7: 1, 8: 1}),\n",
7945 " ('x', 'o', 'o', '.', 'x', 'x', '.', 'x', 'o'): Counter({3: 3, 6: 1}),\n",
7954 " 'x'): Counter({2: 1, 3: 2, 4: 1, 5: 1}),\n",
7963 " '.'): Counter({3: 3, 6: 38, 7: 2, 8: 3}),\n",
7964 " ('x', 'o', 'o', '.', 'x', 'o', '.', 'x', '.'): Counter({3: 1, 6: 1, 8: 47}),\n",
7965 " ('x', 'x', '.', 'o', '.', 'x', 'x', 'o', 'o'): Counter({2: 3, 4: 1}),\n",
7974 " '.'): Counter({2: 1, 3: 1, 6: 4, 8: 1}),\n",
7975 " ('x', 'x', '.', '.', 'o', 'x', 'o', 'o', '.'): Counter({2: 9, 3: 1, 8: 1}),\n",
7984 " '.'): Counter({0: 7, 2: 3, 6: 6, 7: 1, 8: 4}),\n",
7993 " '.'): Counter({2: 3, 4: 5, 5: 3, 6: 4, 7: 3, 8: 3}),\n",
7994 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'x', 'o'): Counter({2: 3, 6: 1}),\n",
8003 " '.'): Counter({1: 8, 3: 3, 5: 1, 6: 1, 8: 3}),\n",
8012 " 'o'): Counter({3: 1, 5: 9, 6: 1, 7: 15}),\n",
8013 " ('x', 'x', 'o', 'x', '.', 'x', 'o', '.', 'o'): Counter({4: 9, 7: 5}),\n",
8022 " '.'): Counter({1: 4, 3: 1, 4: 1, 6: 4, 8: 2}),\n",
8023 " ('x', 'x', 'o', 'o', '.', '.', 'o', '.', 'x'): Counter({4: 21, 5: 1, 7: 1}),\n",
8024 " ('x', 'x', '.', '.', 'x', 'o', '.', 'o', 'o'): Counter({2: 69, 3: 1, 6: 1}),\n",
8033 " '.'): Counter({2: 1, 3: 1, 6: 1, 7: 1, 8: 7}),\n",
8042 " '.'): Counter({2: 333, 3: 489, 5: 380, 6: 1023, 8: 837}),\n",
8051 " '.'): Counter({1: 3, 3: 3, 4: 5, 6: 3, 8: 2}),\n",
8052 " ('x', 'o', 'x', 'o', 'x', 'o', 'o', 'x', '.'): Counter({8: 785}),\n",
8053 " ('o', 'x', 'o', 'x', '.', '.', '.', 'x', 'o'): Counter({4: 5, 5: 2, 6: 3}),\n",
8062 " '.'): Counter({1: 1, 2: 18, 3: 3, 4: 2, 6: 3, 7: 1, 8: 3}),\n",
8071 " 'o'): Counter({3: 2, 4: 2, 5: 4, 6: 3, 7: 3}),\n",
8072 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'o', '.'): Counter({2: 4, 4: 2, 8: 8}),\n",
8081 " '.'): Counter({2: 14, 3: 13, 6: 2, 7: 1, 8: 2}),\n",
8090 " 'o'): Counter({2: 103, 3: 56, 5: 276, 6: 90, 7: 784}),\n",
8099 " '.'): Counter({4: 5, 6: 2, 7: 3, 8: 3}),\n",
8100 " ('o', 'x', 'o', 'x', 'o', 'x', '.', '.', '.'): Counter({6: 1, 7: 1, 8: 1}),\n",
8109 " '.'): Counter({2: 1, 3: 1, 6: 1, 8: 1}),\n",
8110 " ('x', 'x', 'o', '.', 'x', '.', 'x', 'o', 'o'): Counter({3: 3, 5: 29}),\n",
8119 " '.'): Counter({1: 39, 2: 2317, 3: 58, 4: 1404, 6: 1572, 7: 7, 8: 22}),\n",
8128 " '.'): Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
8129 " ('x', 'x', 'o', '.', 'o', 'x', '.', '.', 'o'): Counter({3: 1, 6: 5, 7: 1}),\n",
8138 " 'o'): Counter({2: 1, 5: 1, 6: 1, 7: 1}),\n",
8139 " ('x', 'o', '.', 'o', 'x', 'x', '.', '.', 'o'): Counter({2: 17, 6: 22, 7: 3}),\n",
8140 " ('x', 'x', '.', 'o', 'x', 'x', 'o', 'o', '.'): Counter({2: 1, 8: 22}),\n",
8149 " 'o'): Counter({2: 6, 3: 9, 4: 1, 5: 5, 6: 24}),\n",
8150 " ('x', 'x', '.', 'o', 'o', 'x', 'x', 'o', 'o'): Counter({2: 92}),\n",
8151 " ('x', 'x', '.', '.', 'o', 'o', '.', 'x', 'o'): Counter({2: 6, 3: 3, 6: 2}),\n",
8160 " '.'): Counter({2: 1, 6: 1, 7: 1, 8: 1}),\n",
8169 " '.'): Counter({2: 2, 4: 1, 5: 3, 8: 1}),\n",
8170 " ('x', 'o', 'x', '.', 'x', '.', 'o', 'o', '.'): Counter({3: 1, 5: 1, 8: 321}),\n",
8171 " ('x', 'x', 'o', 'o', '.', 'x', 'x', 'o', '.'): Counter({4: 3, 8: 3}),\n",
8180 " '.'): Counter({3: 1, 6: 1, 7: 1, 8: 1}),\n",
8189 " '.'): Counter({2: 4, 5: 7, 6: 3, 8: 2}),\n",
8198 " 'x'): Counter({2: 1, 3: 1, 4: 21, 5: 1, 6: 1}),\n",
8207 " 'x'): Counter({4: 272, 5: 75, 7: 140}),\n",
8216 " 'o'): Counter({2: 4, 3: 1, 6: 1, 7: 3}),\n",
8217 " ('x', 'x', '.', '.', '.', 'o', 'x', 'o', 'o'): Counter({2: 29, 3: 53, 4: 1}),\n",
8226 " 'x'): Counter({2: 3, 3: 1, 5: 1, 6: 2}),\n",
8235 " '.'): Counter({4: 26, 5: 2, 6: 1, 7: 1, 8: 3}),\n",
8236 " ('x', 'x', 'o', 'x', '.', 'x', '.', 'o', 'o'): Counter({4: 2, 6: 10}),\n",
8237 " ('x', 'o', 'o', 'o', 'x', 'x', '.', 'x', '.'): Counter({6: 1, 8: 3}),\n",
8238 " ('x', 'x', 'o', '.', 'o', 'x', 'x', '.', 'o'): Counter({3: 3, 7: 1}),\n",
8247 " '.'): Counter({3: 3, 4: 5, 5: 2, 8: 3}),\n",
8256 " 'o'): Counter({1: 4, 2: 3, 3: 3, 6: 3, 7: 4}),\n",
8257 " ('x', 'o', 'x', 'o', 'x', '.', '.', '.', 'o'): Counter({5: 7, 6: 703, 7: 6}),\n",
8266 " 'o'): Counter({2: 1, 5: 1, 6: 1, 7: 1}),\n",
8275 " 'o'): Counter({5: 10, 6: 1, 7: 310}),\n",
8276 " ('x', 'x', '.', '.', 'o', '.', 'o', 'x', 'o'): Counter({2: 4, 3: 3, 5: 2}),\n",
8277 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'o', 'x'): Counter({6: 3}),\n",
8286 " '.'): Counter({0: 28, 2: 18, 5: 1, 6: 26, 8: 19}),\n",
8295 " '.'): Counter({0: 1, 1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
8296 " ('x', 'x', 'o', '.', 'x', 'x', 'o', '.', 'o'): Counter({3: 1, 7: 20}),\n",
8305 " '.'): Counter({6: 16, 7: 14, 8: 521}),\n",
8314 " '.'): Counter({0: 6, 2: 9, 3: 3, 4: 3, 5: 4, 6: 4, 8: 15}),\n",
8315 " ('x', 'x', '.', 'o', '.', '.', 'x', 'o', 'o'): Counter({2: 88, 4: 4, 5: 5}),\n",
8316 " ('x', 'x', 'o', 'o', '.', 'x', 'x', 'o', 'o'): Counter({4: 3}),\n",
8325 " '.'): Counter({2: 1, 3: 367, 4: 125, 5: 1, 8: 1}),\n",
8334 " '.'): Counter({0: 1, 2: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
8343 " '.'): Counter({2: 5, 4: 5, 5: 3, 6: 3, 8: 1}),\n",
8352 " '.'): Counter({6: 1, 7: 219, 8: 115}),\n",
8353 " ('x', 'x', 'o', '.', 'x', 'o', '.', 'o', '.'): Counter({3: 1, 6: 1, 8: 63}),\n",
8362 " '.'): Counter({3: 2, 4: 5, 7: 4, 8: 2}),\n",
8363 " 'human?': False,\n",
8364 " ('x', 'x', 'o', '.', 'o', 'o', '.', 'x', 'x'): Counter({3: 10, 6: 10}),\n",
8373 " '.'): Counter({2: 1, 6: 1, 7: 1, 8: 1}),\n",
8374 " ('x', 'x', 'o', 'x', 'x', 'o', 'o', 'o', '.'): Counter({8: 6}),\n",
8375 " ('x', 'x', '.', 'x', 'o', 'o', '.', '.', 'o'): Counter({2: 11, 6: 5, 7: 2}),\n",
8376 " ('x', 'o', 'x', 'o', '.', '.', '.', 'o', 'x'): Counter({4: 88, 5: 49, 6: 1}),\n",
8385 " '.'): Counter({3: 859, 5: 437, 6: 368, 7: 16, 8: 706}),\n",
8394 " '.'): Counter({2: 4, 4: 3, 5: 1, 6: 1, 7: 2, 8: 1}),\n",
8403 " '.'): Counter({1: 2, 2: 3, 3: 3, 4: 9, 6: 1, 8: 3}),\n",
8404 " ('x', 'x', 'o', '.', 'x', '.', '.', 'o', 'o'): Counter({3: 1, 5: 1, 6: 1}),\n",
8413 " '.'): Counter({2: 1, 3: 2, 4: 18, 6: 1, 8: 1}),\n",
8414 " ('x', 'o', '.', 'o', '.', 'x', '.', 'x', 'o'): Counter({2: 3, 4: 3, 6: 3}),\n",
8415 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'o', 'x'): Counter(),\n",
8424 " '.'): Counter({3: 25, 5: 1, 7: 1, 8: 1}),\n",
8433 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 1}),\n",
8434 " ('x', 'x', 'o', 'o', 'x', '.', 'x', 'o', 'o'): Counter({5: 3}),\n",
8443 " 'x'): Counter({2: 2, 3: 4, 4: 4, 6: 4, 7: 8}),\n",
8444 " ('x', 'x', 'o', '.', '.', 'o', 'x', 'o', 'x'): Counter({3: 1, 4: 1}),\n",
8453 " 'x'): Counter({1: 2, 3: 2, 4: 5, 5: 3, 6: 3, 7: 4}),\n",
8462 " 'x'): Counter({1: 1, 3: 1, 5: 1, 6: 1029, 7: 1}),\n",
8471 " '.'): Counter({1: 626, 3: 1, 5: 38, 7: 36, 8: 109}),\n",
8480 " 'o'): Counter({2: 2, 3: 1, 5: 1, 7: 16}),\n",
8481 " ('x', 'o', 'x', '.', 'x', '.', 'o', '.', 'o'): Counter({3: 1, 5: 1, 7: 3}),\n",
8490 " 'o'): Counter({1: 1, 3: 3, 4: 5, 6: 2}),\n",
8499 " '.'): Counter({1: 1, 3: 1435, 5: 279, 6: 358, 8: 516}),\n",
8500 " ('x', 'o', 'o', 'o', 'x', 'x', 'o', 'x', '.'): Counter({8: 189}),\n",
8501 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'o', '.'): Counter({3: 60, 5: 3, 8: 7}),\n",
8502 " ('x', 'x', 'o', 'o', 'x', 'x', '.', '.', 'o'): Counter({6: 1, 7: 3}),\n",
8503 " ('x', 'x', 'o', '.', '.', '.', 'x', 'o', 'o'): Counter({3: 47, 4: 1, 5: 8}),\n",
8512 " '.'): Counter({1: 1, 3: 1, 5: 1, 8: 1}),\n",
8513 " ('o', 'x', '.', 'x', 'o', 'x', '.', 'o', '.'): Counter({2: 3, 6: 1, 8: 3}),\n",
8522 " '.'): Counter({1: 1, 2: 1, 3: 2, 6: 1, 8: 1}),\n",
8523 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', 'o', '.'): Counter({8: 285}),\n",
8532 " '.'): Counter({2: 1, 3: 1, 4: 3, 5: 1, 6: 1, 8: 1}),\n",
8533 " ('x', 'x', 'o', '.', 'o', '.', '.', 'x', 'o'): Counter({3: 1, 5: 1, 6: 1}),\n",
8542 " 'o'): Counter({3: 4, 4: 5, 5: 5, 6: 4}),\n",
8543 " ('x', 'x', 'o', 'o', 'x', 'x', '.', 'o', '.'): Counter({6: 1, 8: 3}),\n",
8552 " '.'): Counter({3: 1, 5: 1, 6: 1, 8: 1}),\n",
8553 " ('x', 'x', '.', '.', 'o', 'o', 'x', '.', 'o'): Counter({2: 23, 3: 5, 7: 1}),\n",
8554 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'x', '.'): Counter({5: 20, 8: 3}),\n",
8555 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'o', '.'): Counter({8: 3}),\n",
8564 " '.'): Counter({1: 3913, 2: 1396, 3: 3356, 5: 1, 6: 2434, 7: 12, 8: 188}),\n",
8573 " 'o'): Counter({1: 2, 2: 1, 3: 7, 4: 1, 6: 9}),\n",
8582 " '.'): Counter({2: 103, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
8591 " 'o'): Counter({2: 127, 3: 309, 4: 732, 5: 9, 7: 78}),\n",
8592 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'x', '.'): Counter({6: 8, 8: 3}),\n",
8593 " ('x', 'o', 'x', 'o', 'o', '.', '.', 'x', '.'): Counter({5: 24, 6: 1, 8: 1}),\n",
8602 " 'o'): Counter({3: 730, 6: 22, 7: 4}),\n",
8611 " 'o'): Counter({1: 1, 2: 2, 3: 3, 6: 5}),\n",
8620 " '.'): Counter({0: 1, 2: 2, 4: 7, 5: 3, 6: 2, 8: 1}),\n",
8621 " ('x', 'o', 'o', 'o', '.', 'x', '.', 'x', '.'): Counter({4: 6, 6: 4, 8: 10}),\n",
8630 " '.'): Counter({4: 4, 5: 3, 6: 4, 8: 3}),\n",
8631 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'x', 'o'): Counter({2: 14}),\n",
8640 " 'o'): Counter({2: 1, 3: 1, 5: 1, 7: 1}),\n",
8649 " 'o'): Counter({1: 3, 2: 1036, 3: 13, 4: 342, 5: 6, 6: 1250, 7: 1}),\n",
8650 " ('x', 'x', 'o', 'o', 'o', '.', 'x', '.', '.'): Counter({5: 3, 7: 1, 8: 1}),\n",
8651 " ('x', 'x', 'o', 'x', '.', 'o', 'o', '.', '.'): Counter({4: 1, 7: 1, 8: 1}),\n",
8652 " ('x', 'x', '.', 'o', '.', 'x', '.', 'o', 'o'): Counter({2: 8, 4: 1, 6: 5}),\n",
8653 " ('x', 'o', '.', '.', 'o', 'o', 'x', '.', 'x'): Counter({2: 1, 3: 50, 7: 29}),\n",
8662 " '.'): Counter({3: 1, 5: 1, 7: 1, 8: 1}),\n",
8671 " '.'): Counter({4: 3, 5: 4, 6: 3, 8: 2}),\n",
8672 " ('x', 'x', 'o', '.', '.', '.', 'o', 'o', 'x'): Counter({3: 1, 4: 23, 5: 1}),\n",
8681 " '.'): Counter({5: 54, 7: 52, 8: 137}),\n",
8690 " '.'): Counter({2: 7, 3: 25, 5: 183, 7: 112, 8: 1989}),\n",
8699 " 'x'): Counter({3: 215, 4: 38, 7: 56}),\n",
8708 " 'o'): Counter({1: 5, 3: 1, 5: 2, 7: 1}),\n",
8717 " '.'): Counter({2: 228, 3: 248, 8: 194}),\n",
8718 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', '.', 'o'): Counter({7: 3}),\n",
8727 " '.'): Counter({4: 3, 5: 7, 7: 3, 8: 3}),\n",
8728 " ('x', 'x', 'o', '.', '.', 'o', 'o', '.', 'x'): Counter({3: 1, 4: 32, 7: 1}),\n",
8737 " '.'): Counter({2: 48, 6: 163, 8: 84}),\n",
8746 " '.'): Counter({2: 1, 5: 1, 6: 1, 8: 1}),\n",
8747 " ('o', 'x', 'o', 'x', '.', 'x', 'o', '.', '.'): Counter({4: 4, 7: 2, 8: 3}),\n",
8756 " 'x'): Counter({2: 3, 4: 4, 6: 2, 7: 2}),\n",
8757 " ('x', 'x', 'o', 'x', '.', 'o', '.', 'o', 'x'): Counter({4: 1, 6: 1}),\n",
8758 " ('x', 'o', '.', '.', '.', 'x', 'o', 'x', 'o'): Counter({2: 3, 3: 3, 4: 5}),\n",
8759 " ('x', 'x', 'o', 'o', '.', 'o', '.', 'x', 'x'): Counter({4: 8, 6: 2}),\n",
8768 " '.'): Counter({2: 2, 3: 404, 5: 1, 7: 93, 8: 1}),\n",
8777 " '.'): Counter({5: 1, 6: 1, 7: 1, 8: 1}),\n",
8778 " ('x', 'x', 'o', 'o', '.', 'o', 'x', '.', 'x'): Counter({4: 9, 7: 1}),\n",
8787 " 'o'): Counter({1: 3, 3: 2, 4: 2, 5: 2}),\n",
8788 " ('x', 'x', '.', 'o', 'o', 'x', 'x', '.', 'o'): Counter({2: 3, 7: 1}),\n",
8789 " ('x', 'o', 'o', '.', 'o', 'x', 'x', '.', '.'): Counter({3: 61, 7: 35, 8: 1}),\n",
8790 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'x', 'o'): Counter({4: 3, 6: 1}),\n",
8791 " ('x', 'x', 'o', '.', '.', 'x', 'o', '.', 'o'): Counter({3: 1, 4: 2, 7: 1}),\n",
8800 " 'o'): Counter({2: 3, 3: 3, 4: 4, 5: 3, 6: 3}),\n",
8801 " ('x', 'x', 'o', 'o', '.', 'x', 'x', '.', 'o'): Counter({4: 3, 7: 3}),\n",
8802 " ('x', 'x', 'o', 'o', 'o', 'x', '.', 'x', 'o'): Counter({6: 3}),\n",
8811 " '.'): Counter({2: 1, 3: 1, 6: 1, 8: 1}),\n",
8812 " ('x', 'x', 'o', 'o', '.', 'o', 'x', 'o', 'x'): Counter({4: 173}),\n",
8821 " '.'): Counter({2: 22, 3: 4, 5: 8, 6: 6, 8: 5}),\n",
8822 " ('x', 'x', '.', 'o', 'o', '.', '.', 'x', 'o'): Counter({2: 5, 5: 4, 6: 2}),\n",
8823 " ('x', 'x', '.', 'o', 'x', 'o', 'x', 'o', '.'): Counter({2: 1, 8: 1}),\n",
8832 " '.'): Counter({2: 2, 5: 1, 6: 821, 7: 559, 8: 1}),\n",
8833 " ('x', 'x', 'o', 'o', '.', 'x', 'o', '.', 'x'): Counter({4: 7, 7: 2}),\n",
8834 " ('x', 'x', '.', 'o', 'x', 'x', 'o', '.', 'o'): Counter({2: 1, 7: 23}),\n",
8843 " '.'): Counter({2: 40, 5: 6, 6: 2, 7: 1, 8: 1}),\n",
8852 " '.'): Counter({1: 1, 3: 2, 5: 1, 6: 8, 8: 3}),\n",
8853 " ('x', 'x', '.', '.', 'o', 'o', 'o', '.', 'x'): Counter({2: 31, 3: 1, 7: 1}),\n",
8862 " '.'): Counter({2: 1, 5: 1, 6: 1, 7: 2, 8: 3}),\n",
8871 " '.'): Counter({0: 2, 2: 5, 4: 2, 6: 4, 7: 3, 8: 9}),\n",
8880 " 'x'): Counter({3: 3, 4: 3, 5: 2, 7: 3}),\n",
8889 " '.'): Counter({0: 1, 2: 1, 3: 1, 4: 109, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
8890 " ('o', 'x', '.', '.', 'x', 'x', 'o', '.', 'o'): Counter({2: 1, 3: 43, 7: 38}),\n",
8899 " '.'): Counter({1: 1, 3: 1, 7: 1, 8: 1}),\n",
8900 " ('x', 'x', 'o', 'x', 'o', 'o', '.', '.', '.'): Counter({6: 13, 7: 1, 8: 3}),\n",
8909 " '.'): Counter({3: 1, 4: 249, 5: 1, 6: 1, 8: 1}),\n",
8910 " ('x', 'o', '.', '.', 'x', 'o', '.', 'x', 'o'): Counter({2: 16, 3: 1, 6: 1}),\n",
8911 " ('x', 'x', '.', 'x', 'o', 'o', '.', 'o', 'x'): Counter({2: 1, 6: 1}),\n",
8912 " ('x', 'x', '.', 'o', '.', 'o', 'x', 'o', 'x'): Counter({2: 3, 4: 6}),\n",
8921 " '.'): Counter({0: 4, 2: 3, 6: 4, 8: 6}),\n",
8930 " '.'): Counter({1: 1, 2: 1, 3: 1, 5: 1, 6: 12, 7: 1, 8: 2418}),\n",
8939 " '.'): Counter({1: 2, 3: 2, 6: 17, 8: 8}),\n",
8940 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'x', 'o'): Counter({4: 11}),\n",
8949 " 'o'): Counter({3: 3, 4: 3, 6: 3, 7: 3}),\n",
8958 " '.'): Counter({3: 145, 6: 240, 8: 200}),\n",
8967 " '.'): Counter({3: 1, 4: 4, 5: 8, 7: 14, 8: 736}),\n",
8968 " ('x', 'x', '.', 'o', 'x', 'o', 'x', 'o', 'o'): Counter({2: 287}),\n",
8977 " '.'): Counter({2: 1, 3: 1, 6: 1, 7: 8, 8: 1}),\n",
8978 " ('o', 'x', 'o', 'x', 'o', '.', '.', 'x', '.'): Counter({5: 1, 6: 3, 8: 1}),\n",
8987 " 'o'): Counter({3: 3, 4: 3, 5: 6, 7: 1}),\n",
8996 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 23}),\n",
8997 " ('o', 'x', '.', 'x', '.', 'x', '.', 'o', 'o'): Counter({2: 3, 4: 3, 6: 5}),\n",
8998 " ('o', 'x', '.', 'o', 'o', 'x', '.', 'x', '.'): Counter({2: 2, 6: 3, 8: 1}),\n",
9007 " '.'): Counter({3: 2, 4: 1, 7: 2, 8: 2}),\n",
9016 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 5}),\n",
9025 " '.'): Counter({3: 5, 5: 16, 6: 26, 8: 8}),\n",
9026 " ('x', 'o', 'o', '.', 'o', 'x', '.', 'x', '.'): Counter({3: 1, 6: 10, 8: 1}),\n",
9035 " '.'): Counter({0: 2, 2: 5, 6: 3, 8: 5}),\n",
9044 " 'o'): Counter({2: 178, 3: 1, 7: 198}),\n",
9045 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'o', 'x'): Counter({4: 8}),\n",
9054 " 'o'): Counter({2: 215, 6: 1, 7: 112}),\n",
9055 " ('x', 'x', 'o', 'x', 'x', 'o', '.', 'o', '.'): Counter({6: 1, 8: 16}),\n",
9064 " 'x'): Counter({3: 2, 4: 1, 5: 1, 6: 6}),\n",
9065 " ('x', 'o', 'o', '.', '.', 'x', 'o', 'x', '.'): Counter({3: 1, 4: 9, 8: 3}),\n",
9074 " '.'): Counter({1: 2, 3: 30, 4: 2244, 5: 3, 6: 2399, 7: 1, 8: 542}),\n",
9083 " '.'): Counter({1: 1, 3: 1, 6: 1, 7: 1, 8: 2655}),\n",
9084 " ('x', 'o', 'x', 'o', 'x', 'o', '.', 'x', '.'): Counter({6: 1, 8: 1}),\n",
9093 " '.'): Counter({0: 3, 2: 4, 4: 3, 6: 3, 8: 3}),\n",
9094 " ('x', 'x', '.', 'x', 'x', 'o', '.', 'o', 'o'): Counter({2: 10, 6: 6}),\n",
9095 " ('x', 'x', 'o', '.', 'o', 'o', 'x', '.', '.'): Counter({3: 19, 7: 1, 8: 1}),\n",
9104 " 'o'): Counter({2: 7, 3: 2, 4: 2, 7: 6}),\n",
9105 " ('o', 'x', 'o', 'x', 'o', 'x', '.', 'x', '.'): Counter({6: 4, 8: 11}),\n",
9106 " ('x', 'o', 'o', '.', 'x', 'x', 'x', '.', 'o'): Counter({3: 3, 7: 1}),\n",
9115 " '.'): Counter({1: 3, 3: 1, 6: 1, 8: 21}),\n",
9116 " ('o', 'x', 'o', 'x', 'x', 'o', '.', '.', '.'): Counter({6: 1, 7: 321, 8: 9}),\n",
9125 " '.'): Counter({1: 1, 3: 107, 8: 162}),\n",
9134 " '.'): Counter({2: 1, 3: 2, 7: 19, 8: 4}),\n",
9135 " ('x', 'o', '.', '.', 'o', 'x', 'o', 'x', '.'): Counter({2: 8, 3: 1, 8: 1}),\n",
9136 " ('x', 'x', '.', 'o', 'o', '.', 'x', '.', 'o'): Counter({2: 21, 5: 4, 7: 2}),\n",
9137 " ('x', 'x', '.', 'o', '.', 'o', 'o', 'x', '.'): Counter({2: 5, 4: 6, 8: 3}),\n",
9146 " '.'): Counter({5: 257, 6: 278, 8: 317}),\n",
9155 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 1}),\n",
9164 " '.'): Counter({2: 2, 3: 1, 4: 1, 6: 1, 7: 1, 8: 8}),\n",
9173 " '.'): Counter({1: 1, 2: 1, 3: 1, 4: 44, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
9174 " ('o', 'x', '.', 'o', 'x', 'x', '.', 'o', '.'): Counter({2: 1, 6: 24, 8: 1}),\n",
9183 " 'o'): Counter({2: 3, 3: 22, 5: 140}),\n",
9192 " 'o'): Counter({1: 1, 3: 1, 6: 1, 7: 1}),\n",
9201 " '.'): Counter({4: 4, 5: 2, 7: 3, 8: 2}),\n",
9202 " ('x', 'x', 'o', 'x', '.', '.', 'o', '.', 'o'): Counter({4: 3, 5: 3, 7: 3}),\n",
9203 " ('x', 'x', 'o', '.', '.', 'o', '.', 'o', 'x'): Counter({3: 8, 4: 6, 6: 11}),\n",
9204 " ('x', 'o', 'x', 'o', '.', 'o', 'x', '.', '.'): Counter({4: 27, 7: 1, 8: 2}),\n",
9205 " ('x', 'o', 'o', '.', '.', 'x', 'x', 'o', '.'): Counter({3: 42, 4: 51, 8: 1}),\n",
9206 " ('x', 'x', 'o', 'o', '.', 'o', 'x', '.', '.'): Counter({4: 1, 7: 1, 8: 1}),\n",
9207 " ('x', 'x', 'o', 'o', '.', 'o', '.', '.', 'x'): Counter({4: 12, 6: 1, 7: 1}),\n",
9216 " 'o'): Counter({2: 3, 5: 2, 6: 1, 7: 1}),\n",
9217 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', '.', 'o'): Counter({7: 268}),\n",
9226 " '.'): Counter({2: 5, 3: 3, 4: 4, 8: 3}),\n",
9235 " 'x'): Counter({2: 3, 4: 6, 5: 5, 6: 5, 7: 6}),\n",
9244 " '.'): Counter({2: 3, 3: 3, 4: 3, 6: 3, 8: 3}),\n",
9253 " '.'): Counter({0: 12, 2: 27, 6: 33, 7: 18, 8: 17}),\n",
9262 " 'o'): Counter({2: 3, 3: 3, 4: 3, 6: 1}),\n",
9263 " ('x', 'x', 'o', 'o', 'o', '.', '.', '.', 'x'): Counter({5: 1, 6: 1, 7: 1}),\n",
9264 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'x', 'o'): Counter({5: 3}),\n",
9273 " '.'): Counter({0: 9, 2: 10, 3: 8, 5: 4, 6: 5, 8: 2}),\n",
9274 " ('x', 'x', 'o', 'o', 'x', 'x', 'x', 'o', 'o'): Counter(),\n",
9275 " ('x', 'x', 'o', '.', 'o', 'x', '.', 'x', 'o'): Counter({3: 3, 6: 20}),\n",
9276 " ('x', 'x', 'o', '.', 'o', 'o', 'x', 'o', 'x'): Counter({3: 344}),\n",
9277 " ('x', 'o', 'o', '.', 'x', 'x', 'o', 'x', '.'): Counter({3: 1, 8: 1}),\n",
9278 " ('x', 'x', '.', '.', 'o', 'x', 'o', '.', 'o'): Counter({2: 6, 3: 1, 7: 2}),\n",
9279 " ('x', 'x', 'o', 'o', 'x', '.', 'x', '.', 'o'): Counter({5: 25, 7: 3}),\n",
9288 " '.'): Counter({2: 1, 6: 1, 7: 1, 8: 1}),\n",
9297 " '.'): Counter({2: 2, 3: 1, 4: 1, 5: 1, 7: 1, 8: 1}),\n",
9298 " ('x', '.', 'x', '.', 'o', '.', 'o', 'x', 'o'): Counter({1: 17, 3: 3, 5: 5}),\n",
9307 " 'o'): Counter({1: 802, 3: 1, 4: 1, 5: 1, 7: 6}),\n",
9316 " 'x'): Counter({4: 5, 5: 7, 6: 2, 7: 3}),\n",
9325 " '.'): Counter({4: 223, 5: 180, 6: 2, 7: 22, 8: 14}),\n",
9326 " ('x', 'o', 'o', '.', '.', 'x', '.', 'x', 'o'): Counter({3: 4, 4: 5, 6: 3}),\n",
9335 " '.'): Counter({2: 4, 4: 3, 7: 2, 8: 2}),\n",
9344 " '.'): Counter({3: 1, 5: 1, 7: 2, 8: 10}),\n",
9353 " 'x'): Counter({2: 1, 3: 1, 4: 1, 6: 1}),\n",
9362 " '.'): Counter({5: 270, 7: 87, 8: 141}),\n",
9371 " '.'): Counter({2: 10, 4: 17, 5: 6, 7: 6, 8: 20}),\n",
9380 " '.'): Counter({3: 5, 4: 6, 5: 7, 6: 27, 8: 17}),\n",
9389 " '.'): Counter({0: 2137, 2: 1316, 3: 221, 5: 292, 6: 2347, 7: 12, 8: 5714}),\n",
9390 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'o', 'x'): Counter({4: 3, 6: 2}),\n",
9399 " '.'): Counter({1: 1, 3: 1, 6: 1, 8: 1}),\n",
9400 " ('x', 'o', 'x', 'o', 'x', '.', '.', 'x', 'o'): Counter({5: 1, 6: 3}),\n",
9409 " '.'): Counter({2: 6, 3: 10, 4: 6, 5: 6, 8: 9}),\n",
9410 " ('x', 'o', 'x', 'o', '.', '.', 'o', 'x', '.'): Counter({4: 9, 5: 11, 8: 90}),\n",
9411 " ('o', 'x', 'o', 'x', '.', 'o', '.', 'x', '.'): Counter({4: 5, 6: 1, 8: 3}),\n",
9412 " ('x', 'o', '.', '.', 'x', 'o', 'o', 'x', '.'): Counter({2: 8, 3: 9, 8: 334}),\n",
9421 " '.'): Counter({2: 15, 3: 2, 7: 2, 8: 1}),\n",
9430 " '.'): Counter({2: 5, 3: 10, 4: 6, 6: 7, 8: 5}),\n",
9431 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'x', '.'): Counter({2: 8, 8: 1}),\n",
9440 " 'o'): Counter({1: 4, 3: 1, 5: 20, 6: 1}),\n",
9441 " ('x', 'o', 'x', 'o', '.', '.', 'x', '.', 'o'): Counter({4: 222, 5: 8, 7: 8}),\n",
9450 " 'o'): Counter({2: 1, 3: 1, 6: 1, 7: 1}),\n",
9459 " '.'): Counter({2: 2, 3: 3, 4: 3, 8: 2}),\n",
9460 " ('x', 'x', 'o', 'o', '.', 'o', '.', 'x', '.'): Counter({4: 9, 6: 1, 8: 3}),\n",
9461 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'o', '.'): Counter({4: 18, 5: 3, 8: 17}),\n",
9462 " ('x', 'x', 'o', '.', 'o', '.', 'x', '.', 'o'): Counter({3: 9, 5: 7, 7: 1}),\n",
9471 " 'o'): Counter({4: 4, 5: 4, 6: 5, 7: 4}),\n",
9480 " '.'): Counter({3: 3, 4: 2, 5: 1, 6: 10, 8: 8}),\n",
9481 " ('x', 'x', 'o', 'x', 'o', 'x', '.', '.', 'o'): Counter({6: 18, 7: 1}),\n",
9490 " '.'): Counter({2: 1, 6: 14, 7: 5, 8: 1}),\n",
9491 " ('x', 'x', '.', 'o', '.', '.', 'o', 'o', 'x'): Counter({2: 9, 4: 26, 5: 4}),\n",
9492 " ('x', 'x', '.', 'o', '.', 'o', 'o', '.', 'x'): Counter({2: 13, 4: 19, 7: 1}),\n",
9501 " 'o'): Counter({2: 10, 3: 1, 5: 3, 6: 14}),\n",
9510 " 'x'): Counter({3: 383, 5: 1, 7: 451}),\n",
9511 " ('x', 'o', 'x', '.', 'x', '.', 'o', 'x', 'o'): Counter({3: 3, 5: 3}),\n",
9520 " '.'): Counter({3: 12, 5: 2, 6: 3, 8: 2}),\n",
9521 " ('x', 'o', 'o', '.', 'x', 'x', 'x', 'o', '.'): Counter({3: 1, 8: 1}),\n",
9530 " '.'): Counter({2: 19, 3: 2, 5: 2, 7: 2, 8: 2}),\n",
9539 " '.'): Counter({2: 1, 3: 1, 4: 1, 6: 2, 7: 1, 8: 1}),\n",
9540 " ('x', 'x', 'o', '.', 'o', '.', '.', 'o', 'x'): Counter({3: 1, 5: 1, 6: 158}),\n",
9541 " ('x', 'o', 'x', 'o', 'x', '.', 'o', 'x', 'o'): Counter({5: 3}),\n",
9542 " ('x', 'x', '.', 'o', 'x', '.', 'x', 'o', 'o'): Counter({2: 3, 5: 1}),\n",
9551 " '.'): Counter({3: 3, 4: 5, 6: 3, 8: 4}),\n",
9560 " '.'): Counter({2: 576, 3: 241, 6: 222, 7: 171, 8: 94}),\n",
9561 " ('x', 'x', '.', 'x', 'o', 'x', '.', 'o', 'o'): Counter({2: 1, 6: 18}),\n",
9570 " '.'): Counter({1: 1, 3: 3, 4: 3, 8: 2}),\n",
9571 " ('x', 'x', '.', 'o', 'o', 'x', 'o', '.', 'x'): Counter({2: 11, 7: 1}),\n",
9580 " '.'): Counter({0: 4, 2: 3, 4: 3, 6: 3, 8: 4}),\n",
9581 " ('x', 'x', 'o', '.', '.', '.', 'o', 'x', 'o'): Counter({3: 2, 4: 3, 5: 3}),\n",
9590 " 'o'): Counter({1: 6, 3: 1, 5: 1, 7: 13}),\n",
9599 " '.'): Counter({5: 1, 6: 28, 7: 1, 8: 1}),\n",
9600 " ('x', 'o', 'x', 'o', '.', '.', '.', 'x', 'o'): Counter({4: 5, 5: 3, 6: 8}),\n",
9609 " '.'): Counter({0: 1, 2: 1, 3: 1, 5: 1, 6: 3, 8: 2}),\n",
9618 " '.'): Counter({2: 1, 5: 1, 7: 1, 8: 1}),\n",
9627 " '.'): Counter({2: 3, 3: 3, 4: 3, 8: 3}),\n",
9636 " 'o'): Counter({3: 717, 5: 1, 7: 30}),\n",
9645 " 'x'): Counter({2: 2, 3: 4, 4: 3, 7: 2}),\n",
9654 " '.'): Counter({2: 10, 3: 2, 5: 1, 6: 1, 8: 1}),\n",
9663 " '.'): Counter({2: 6, 3: 4, 5: 2, 6: 23, 8: 20}),\n",
9664 " ('x', 'x', '.', 'o', '.', 'o', '.', 'x', 'o'): Counter({2: 3, 4: 5, 6: 2}),\n",
9665 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'x', 'o'): Counter({5: 14, 6: 6}),\n",
9674 " '.'): Counter({3: 177, 5: 188, 6: 103, 7: 553, 8: 263}),\n",
9675 " ('x', 'x', 'o', 'x', 'x', '.', '.', 'o', 'o'): Counter({5: 11, 6: 11}),\n",
9684 " '.'): Counter({2: 1, 3: 1, 6: 1, 8: 1}),\n",
9693 " 'x'): Counter({2: 339, 3: 164, 6: 1}),\n",
9702 " 'o'): Counter({2: 31, 3: 39, 5: 29}),\n",
9711 " '.'): Counter({2: 341, 3: 147, 6: 703, 7: 96, 8: 1591}),\n",
9720 " '.'): Counter({1: 1, 2: 1, 3: 1, 6: 1, 7: 1, 8: 1}),\n",
9729 " 'x'): Counter({1: 1, 3: 2, 4: 90, 5: 1, 7: 1}),\n",
9738 " '.'): Counter({2: 19, 3: 8, 6: 5, 8: 2}),\n",
9739 " ('x', 'x', 'o', '.', 'o', 'x', '.', 'o', '.'): Counter({3: 1, 6: 6, 8: 1}),\n",
9748 " '.'): Counter({2: 272, 5: 1, 8: 52}),\n",
9757 " '.'): Counter({2: 14, 3: 1, 4: 1, 5: 1, 8: 12}),\n",
9766 " 'o'): Counter({2: 6, 3: 1, 4: 1, 5: 5, 6: 8, 7: 1}),\n",
9775 " '.'): Counter({1: 2, 3: 2, 4: 7, 5: 3, 6: 1, 8: 5}),\n",
9784 " '.'): Counter({2: 4, 3: 11, 6: 9, 8: 9}),\n",
9785 " ('x', 'x', '.', 'x', '.', 'o', '.', 'o', 'o'): Counter({2: 4, 4: 3, 6: 5}),\n",
9794 " '.'): Counter({0: 3072,\n",
9803 " ('x', 'x', '.', 'o', 'x', 'x', '.', 'o', 'o'): Counter({2: 3, 6: 17}),\n",
9812 " 'o'): Counter({2: 2, 4: 3, 6: 3, 7: 1}),\n",
9821 " '.'): Counter({5: 311, 6: 10, 8: 6}),\n",
9830 " '.'): Counter({2: 2, 3: 4, 7: 2, 8: 1}),\n",
9839 " '.'): Counter({3: 5, 4: 2, 6: 1, 7: 1, 8: 6}),\n",
9840 " ('x', 'o', 'x', 'o', 'o', '.', 'x', '.', 'x'): Counter({5: 11, 7: 8}),\n",
9841 " ('x', 'x', 'o', 'o', 'o', '.', 'x', '.', 'x'): Counter({5: 30, 7: 3}),\n",
9850 " 'o'): Counter({1: 2, 2: 1801, 3: 1, 6: 1, 7: 1}),\n",
9859 " '.'): Counter({2: 1, 3: 4, 6: 1, 8: 1}),\n",
9868 " 'x'): Counter({1: 4, 2: 2, 3: 11, 5: 4, 6: 12, 7: 4}),\n",
9877 " 'x'): Counter({2: 1, 4: 2, 5: 1, 6: 2}),\n",
9886 " '.'): Counter({1: 1, 3: 3, 5: 2, 8: 17}),\n",
9887 " ('x', 'o', '.', '.', 'x', 'x', '.', 'o', 'o'): Counter({2: 1, 3: 96, 6: 61}),\n",
9896 " '.'): Counter({2: 5, 3: 1, 4: 1, 5: 1, 6: 1, 8: 1}),\n",
9905 " '.'): Counter({3: 1, 4: 21, 5: 1, 7: 1, 8: 1}),\n",
9906 " ('x', 'o', 'x', 'o', '.', 'o', 'x', 'o', 'x'): Counter({4: 6}),\n",
9915 " '.'): Counter({2: 1, 3: 323, 5: 104, 6: 509, 8: 12}),\n",
9916 " ('x', 'o', '.', 'o', 'o', 'x', '.', 'x', '.'): Counter({2: 3, 6: 5, 8: 4}),\n",
9925 " '.'): Counter({2: 4, 3: 3, 4: 20, 5: 2, 6: 6, 7: 4, 8: 2}),\n",
9934 " '.'): Counter({3: 18, 5: 1, 7: 32, 8: 1}),\n",
9935 " ('x', 'o', '.', '.', 'o', 'x', '.', 'x', 'o'): Counter({2: 3, 3: 6, 6: 5}),\n",
9944 " '.'): Counter({2: 2, 3: 1, 4: 4, 8: 3}),\n",
9953 " '.'): Counter({2: 2, 4: 2, 6: 3, 8: 3}),\n",
9954 " ('x', 'x', '.', 'o', 'o', 'x', '.', '.', 'o'): Counter({2: 9, 6: 3, 7: 5}),\n",
9963 " 'x'): Counter({2: 4, 4: 2, 5: 3, 7: 3}),\n",
9972 " '.'): Counter({1: 1, 3: 1, 6: 6, 7: 1, 8: 3}),\n",
9973 " ('x', 'x', 'o', 'o', '.', 'x', '.', 'o', '.'): Counter({4: 7, 6: 3, 8: 3}),\n",
9974 " ('x', 'x', 'o', 'o', '.', '.', 'o', 'x', '.'): Counter({4: 5, 5: 1, 8: 3}),\n",
9983 " '.'): Counter({1: 168, 2: 364, 3: 68, 6: 288, 8: 666}),\n",
9992 " '.'): Counter({2: 11, 4: 14, 5: 7, 6: 8, 8: 20}),\n",
10001 " 'o'): Counter({1: 1, 3: 1, 4: 1, 5: 1, 6: 1}),\n",
10010 " '.'): Counter({2: 1, 3: 105, 8: 77}),\n",
10011 " ('x', 'x', '.', 'o', '.', 'x', 'o', 'x', 'o'): Counter({2: 1, 4: 1}),\n",
10020 " 'o'): Counter({1: 1, 3: 542, 6: 13}),\n",
10029 " 'o'): Counter({2: 21, 3: 1, 4: 1, 5: 3, 6: 5}),\n",
10030 " ('x', 'x', '.', 'o', '.', '.', 'o', 'x', 'o'): Counter({2: 5, 4: 5, 5: 4}),\n",
10031 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'o', '.'): Counter({2: 10, 6: 3, 8: 5}),\n",
10032 " ('o', 'x', 'o', 'x', '.', 'x', 'o', 'x', 'o'): Counter({4: 3}),\n",
10041 " '.'): Counter({5: 11, 7: 7, 8: 767}),\n",
10050 " '.'): Counter({4: 3, 6: 4, 7: 1, 8: 4}),\n",
10059 " '.'): Counter({3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
10060 " ('x', 'x', '.', '.', 'o', 'o', 'x', 'o', 'x'): Counter({2: 2, 3: 15}),\n",
10069 " 'o'): Counter({2: 11, 3: 6, 5: 5, 6: 5, 7: 4}),\n",
10078 " 'o'): Counter({2: 3, 4: 4, 5: 3, 6: 2}),\n",
10079 " ('x', 'x', 'o', 'x', 'x', 'o', 'o', '.', '.'): Counter({7: 1, 8: 17}),\n",
10088 " '.'): Counter({4: 4, 6: 3, 7: 2, 8: 2}),\n",
10089 " ('x', 'x', '.', 'o', '.', 'x', 'o', '.', 'o'): Counter({2: 9, 4: 2, 7: 4}),\n",
10098 " '.'): Counter({2: 4, 3: 4, 4: 6, 7: 7, 8: 10}),\n",
10099 " ('x', 'o', 'x', 'o', 'o', '.', 'x', '.', '.'): Counter({5: 1, 7: 1, 8: 1}),\n",
10108 " '.'): Counter({3: 4, 4: 3, 7: 2, 8: 8}),\n",
10109 " ('x', 'x', '.', '.', 'o', '.', 'o', 'o', 'x'): Counter({2: 503, 3: 1, 5: 2}),\n",
10118 " 'o'): Counter({2: 8, 3: 2, 4: 1, 6: 1}),\n",
10127 " '.'): Counter({3: 124, 5: 77, 8: 145}),\n",
10136 " '.'): Counter({1: 4, 2: 1, 3: 7, 4: 2, 6: 2, 8: 3}),\n",
10137 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'o', 'x'): Counter({3: 3, 5: 1}),\n",
10138 " ('x', 'x', '.', 'o', 'x', 'o', 'x', '.', 'o'): Counter({2: 19, 7: 1}),\n",
10147 " '.'): Counter({2: 3, 6: 1, 7: 3, 8: 2}),\n",
10156 " 'o'): Counter({2: 5, 3: 1, 5: 1, 6: 1}),\n",
10165 " 'o'): Counter({3: 3, 4: 2, 5: 3, 7: 1}),\n",
10166 " ('x', 'x', 'o', 'o', 'o', 'x', '.', '.', '.'): Counter({6: 3, 7: 1, 8: 1}),\n",
10175 " 'x'): Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1551}),\n",
10184 " '.'): Counter({2: 1, 3: 23, 7: 2, 8: 1}),\n",
10185 " ('x', 'x', 'o', 'x', 'x', '.', 'o', '.', 'o'): Counter({5: 4, 7: 13}),\n",
10186 " ('x', 'x', 'o', 'o', '.', 'x', '.', '.', 'o'): Counter({4: 3, 6: 3, 7: 5}),\n",
10195 " '.'): Counter({3: 3, 4: 3, 6: 3, 8: 1}),\n",
10196 " ('x', 'x', 'o', '.', 'o', 'o', '.', 'x', '.'): Counter({3: 1, 6: 1, 8: 1}),\n",
10205 " '.'): Counter({2: 4, 3: 4, 4: 3, 5: 1, 8: 1}),\n",
10214 " '.'): Counter({2: 1, 3: 1, 4: 12, 6: 1, 7: 2, 8: 2}),\n",
10223 " '.'): Counter({6: 139, 7: 104, 8: 282}),\n",
10224 " ('x', 'o', 'x', 'o', 'x', '.', 'o', 'x', '.'): Counter({5: 1, 8: 3}),\n",
10233 " 'x'): Counter({2: 13, 3: 1, 5: 1, 7: 4}),\n",
10242 " 'o'): Counter({2: 53, 6: 1, 7: 179}),\n",
10251 " 'o'): Counter({2: 10, 3: 4, 4: 1, 5: 1, 7: 6}),\n",
10252 " ('x', 'x', 'o', 'x', '.', 'o', 'o', '.', 'x'): Counter({4: 6, 7: 1}),\n",
10261 " '.'): Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
10262 " ('x', 'o', 'o', '.', 'x', 'x', 'o', 'x', 'o'): Counter({3: 736}),\n",
10263 " ('x', 'x', 'o', 'x', 'o', 'o', '.', 'x', '.'): Counter({6: 14, 8: 13}),\n",
10272 " 'o'): Counter({2: 1, 3: 3, 4: 13, 6: 4, 7: 4}),\n",
10273 " ('x', 'x', '.', 'o', 'o', 'x', '.', 'o', 'x'): Counter({2: 3, 6: 1}),\n",
10282 " '.'): Counter({5: 14, 6: 6, 8: 162}),\n",
10283 " ('o', 'o', '.', 'o', 'x', 'x', '.', 'x', '.'): Counter({2: 3, 6: 2, 8: 1}),\n",
10284 " ('x', 'x', 'o', 'o', '.', 'o', 'x', 'x', '.'): Counter({4: 4, 8: 6}),\n",
10293 " 'o'): Counter({1: 1, 2: 3, 3: 2, 6: 16}),\n",
10294 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'o', '.'): Counter({5: 5, 6: 6, 8: 3}),\n",
10303 " '.'): Counter({1: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
10312 " 'x'): Counter({4: 3, 5: 3, 6: 1, 7: 1}),\n",
10313 " ('x', 'x', 'o', 'x', 'o', 'o', '.', 'o', 'x'): Counter({6: 185}),\n",
10322 " 'x'): Counter({3: 14, 5: 6, 6: 28, 7: 4}),\n",
10331 " '.'): Counter({2: 5, 3: 1, 4: 4, 8: 2}),\n",
10332 " ('x', 'x', 'o', 'o', 'x', '.', 'x', 'o', '.'): Counter({5: 1, 8: 3}),\n",
10333 " ('x', 'o', 'o', '.', '.', 'x', 'x', '.', 'o'): Counter({3: 92, 4: 4, 7: 3}),\n",
10342 " '.'): Counter({2: 8, 6: 4, 7: 4, 8: 16}),\n",
10351 " 'o'): Counter({2: 534, 3: 331, 7: 1}),\n",
10352 " ('x', 'o', 'x', 'o', '.', 'o', 'x', '.', 'x'): Counter({4: 6, 7: 3}),\n",
10361 " '.'): Counter({3: 2, 5: 1, 6: 1, 8: 17}),\n",
10370 " 'o'): Counter({3: 1087, 5: 8, 7: 1}),\n",
10379 " '.'): Counter({2: 1, 4: 4, 6: 2, 8: 3}),\n",
10388 " '.'): Counter({2: 1, 3: 1, 5: 1, 8: 1}),\n",
10397 " 'x'): Counter({2: 63, 3: 5, 4: 61, 5: 62, 7: 9}),\n",
10398 " ('x', 'x', '.', '.', 'o', 'o', 'x', 'o', '.'): Counter({2: 45, 3: 36, 8: 1}),\n",
10407 " '.'): Counter({2: 3, 4: 1, 7: 3, 8: 2}),\n",
10408 " ('x', 'x', 'o', 'o', 'x', 'o', 'x', '.', '.'): Counter({7: 1, 8: 18}),\n",
10409 " ('x', 'x', 'o', 'x', '.', 'x', 'o', 'o', '.'): Counter({4: 7, 8: 4}),\n",
10410 " ('x', 'x', 'o', 'o', '.', '.', '.', 'o', 'x'): Counter({4: 11, 5: 3, 6: 6}),\n",
10411 " ('o', 'x', 'o', 'x', '.', 'x', 'o', 'x', '.'): Counter({4: 5, 8: 3}),\n",
10412 " ('x', 'x', '.', 'o', 'o', '.', '.', 'o', 'x'): Counter({2: 505, 5: 4, 6: 1}),\n",
10413 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'o', 'x'): Counter({4: 3, 5: 2}),\n",
10422 " '.'): Counter({2: 2, 3: 1, 4: 11, 5: 1, 6: 1, 8: 2}),\n",
10431 " 'o'): Counter({2: 25, 3: 1, 6: 1, 7: 2}),\n",
10440 " 'o'): Counter({2: 1, 6: 92, 7: 100}),\n",
10449 " '.'): Counter({3: 1, 7: 205, 8: 232}),\n",
10450 " ('x', 'x', '.', 'o', '.', 'o', '.', 'o', 'x'): Counter({2: 11, 4: 18, 6: 1}),\n",
10459 " 'x'): Counter({2: 1, 3: 1, 4: 2, 5: 1, 6: 1, 7: 2}),\n",
10468 " '.'): Counter({2: 12, 4: 12, 6: 7, 7: 9, 8: 25}),\n",
10469 " ('x', 'x', 'o', 'x', 'o', 'o', '.', '.', 'x'): Counter({6: 15, 7: 1}),\n",
10478 " 'x'): Counter({3: 3, 4: 3, 6: 3, 7: 1}),\n",
10487 " 'o'): Counter({2: 2, 4: 5, 6: 3, 7: 3}),\n",
10496 " '.'): Counter({0: 21, 2: 15, 5: 1, 6: 5, 7: 1, 8: 8}),\n",
10497 " ('o', 'x', '.', '.', 'x', 'x', 'o', 'o', '.'): Counter({2: 1, 3: 40, 8: 1}),\n",
10498 " ('x', 'x', 'o', 'x', 'o', '.', '.', 'o', 'x'): Counter({5: 1, 6: 13}),\n",
10499 " ('x', 'x', 'o', 'o', 'x', 'x', 'o', '.', '.'): Counter({7: 1, 8: 1}),\n",
10508 " 'o'): Counter({1: 3, 3: 3, 4: 5, 6: 4, 7: 2}),\n",
10509 " ('x', 'o', '.', 'o', 'x', 'x', '.', 'x', 'o'): Counter({2: 3, 6: 3}),\n",
10518 " '.'): Counter({4: 4, 5: 4, 6: 1, 8: 4}),\n",
10527 " '.'): Counter({3: 1, 6: 1, 7: 1, 8: 24}),\n",
10528 " ('x', 'o', 'x', 'o', '.', 'o', '.', 'x', '.'): Counter({4: 15, 6: 2, 8: 1}),\n",
10529 " ('x', 'o', 'o', '.', 'x', '.', '.', 'x', 'o'): Counter({3: 1, 5: 19, 6: 1}),\n",
10538 " 'o'): Counter({2: 12, 3: 1, 5: 1, 6: 3}),\n",
10539 " ('x', 'o', 'x', '.', 'o', '.', 'o', 'x', '.'): Counter({3: 3, 5: 14, 8: 6}),\n",
10548 " '.'): Counter({1: 4, 3: 2, 4: 4, 7: 2, 8: 3}),\n",
10549 " ('x', 'x', '.', 'o', 'o', '.', 'x', 'o', '.'): Counter({2: 88, 5: 7, 8: 1}),\n",
10550 " ('x', 'x', 'o', '.', 'x', 'o', 'x', 'o', '.'): Counter({3: 1, 8: 23}),\n",
10559 " 'o'): Counter({2: 188, 5: 1, 6: 14}),\n",
10560 " ('o', 'x', 'o', 'x', 'x', '.', '.', '.', 'o'): Counter({5: 93, 6: 1, 7: 86}),\n",
10569 " '.'): Counter({2: 12, 4: 39, 6: 4, 7: 3, 8: 2}),\n",
10578 " '.'): Counter({2: 1, 3: 1, 7: 1, 8: 1}),\n",
10579 " ('x', 'x', 'o', '.', 'x', 'x', 'o', 'o', '.'): Counter({3: 1, 8: 17}),\n",
10588 " '.'): Counter({2: 3, 4: 3, 6: 3, 7: 3, 8: 3}),\n",
10589 " ('x', 'x', '.', 'o', 'o', '.', 'o', '.', 'x'): Counter({2: 22, 5: 1, 7: 1}),\n",
10598 " 'o'): Counter({3: 191, 4: 263, 5: 1}),\n",
10607 " 'o'): Counter({2: 22, 4: 11, 5: 6, 6: 2, 7: 4}),\n",
10608 " ('x', 'x', 'o', '.', '.', 'x', 'o', 'o', '.'): Counter({3: 2, 4: 4, 8: 3}),\n",
10617 " '.'): Counter({2: 1, 3: 1, 7: 1, 8: 1}),\n",
10618 " ('x', 'x', '.', '.', 'o', 'x', '.', 'o', 'o'): Counter({2: 9, 3: 1, 6: 6}),\n",
10619 " ('x', 'x', 'o', 'o', '.', 'x', 'o', 'x', '.'): Counter({4: 6, 8: 2}),\n",
10620 " ('x', 'x', 'o', '.', 'x', '.', 'o', 'o', '.'): Counter({3: 1, 5: 1, 8: 104}),\n",
10629 " '.'): Counter({2: 1, 3: 1, 5: 1, 6: 2, 8: 2}),\n",
10630 " ('x', 'x', '.', 'o', 'o', '.', 'o', 'x', '.'): Counter({2: 7, 5: 1, 8: 2}),\n",
10639 " 'o'): Counter({2: 4, 4: 3, 5: 1, 7: 3}),\n",
10648 " '.'): Counter({3: 4, 4: 8, 6: 7, 7: 9, 8: 1}),\n",
10657 " '.'): Counter({3: 6, 4: 3, 5: 4, 6: 2, 7: 2, 8: 3}),\n",
10658 " ('x', 'x', '.', 'o', 'o', 'x', 'o', 'o', 'x'): Counter({2: 12}),\n",
10659 " ('x', 'x', 'o', 'o', '.', '.', '.', 'x', 'o'): Counter({4: 6, 5: 4, 6: 3}),\n",
10660 " ('x', 'o', 'o', '.', 'x', 'x', 'x', 'o', 'o'): Counter({3: 529}),\n",
10661 " ('x', 'x', 'o', 'o', 'o', '.', 'x', 'o', 'x'): Counter({5: 3}),\n",
10670 " '.'): Counter({1: 1, 3: 1, 4: 1, 5: 1, 6: 1, 8: 1}),\n",
10679 " '.'): Counter({1: 1, 2: 1, 3: 1, 6: 1, 7: 6, 8: 3}),\n",
10688 " '.'): Counter({2: 3, 4: 3, 6: 2, 8: 3}),\n",
10689 " ('x', 'o', '.', '.', 'x', 'x', 'o', '.', 'o'): Counter({2: 1, 3: 89, 7: 7}),\n",
10698 " 'o'): Counter({1: 1, 3: 270, 7: 279}),\n",
10707 " '.'): Counter({2: 4, 4: 3, 6: 5, 8: 3}),\n",
10716 " '.'): Counter({4: 4, 5: 4, 6: 1, 8: 4}),\n",
10725 " 'o'): Counter({2: 3, 3: 4, 4: 4, 6: 3, 7: 3}),\n",
10726 " ('x', 'x', 'o', 'o', 'o', '.', '.', 'x', 'x'): Counter({5: 5, 6: 15}),\n",
10735 " 'o'): Counter({1: 1, 2: 1, 3: 1, 5: 6, 6: 1, 7: 1}),\n",
10744 " '.'): Counter({2: 6, 3: 1, 6: 1, 8: 1}),\n",
10753 " 'x'): Counter({2: 1, 3: 1, 5: 3, 7: 15}),\n",
10754 " ('o', 'x', '.', 'x', 'x', 'o', '.', 'o', '.'): Counter({2: 30, 6: 11, 8: 3}),\n",
10763 " '.'): Counter({2: 2, 4: 3, 6: 3, 8: 2}),\n",
10772 " '.'): Counter({1: 879, 3: 1, 4: 1, 5: 4, 8: 438}),\n",
10773 " ('x', 'x', 'o', 'o', '.', 'o', 'o', 'x', 'x'): Counter({4: 5}),\n",
10774 " ('x', 'x', 'o', 'x', 'o', '.', '.', '.', 'o'): Counter({5: 3, 6: 10, 7: 1}),\n",
10775 " ('x', 'x', 'o', 'x', 'o', 'x', '.', 'o', '.'): Counter({6: 17, 8: 2}),\n",
10784 " '.'): Counter({2: 2, 4: 4, 6: 3, 7: 3, 8: 2}),\n",
10785 " ('x', 'x', 'o', '.', 'o', 'o', 'x', 'x', '.'): Counter({3: 12, 8: 8}),\n",
10786 " ('x', 'x', 'o', 'x', 'o', 'x', '.', 'o', 'o'): Counter({6: 15}),\n",
10787 " ('x', 'x', '.', 'o', '.', 'o', 'x', 'o', '.'): Counter({2: 38, 4: 67, 8: 3}),\n",
10788 " ('x', 'x', '.', '.', 'o', 'o', 'o', 'x', '.'): Counter({2: 11, 3: 1, 8: 3}),\n",
10797 " '.'): Counter({3: 3, 4: 2, 6: 5, 8: 3}),\n",
10806 " '.'): Counter({3: 2, 5: 1, 6: 1, 7: 15, 8: 1}),\n",
10807 " ('x', 'x', 'o', 'o', 'o', 'x', '.', '.', 'x'): Counter({6: 19, 7: 3}),\n",
10816 " '.'): Counter({3: 1, 5: 1, 7: 1, 8: 1}),\n",
10817 " ('x', 'x', '.', 'o', 'o', '.', 'x', 'o', 'x'): Counter({2: 3, 5: 18}),\n",
10818 " ('x', 'x', 'o', 'o', '.', 'x', 'o', '.', '.'): Counter({4: 7, 7: 2, 8: 2}),\n",
10827 " 'x'): Counter({3: 1, 4: 3, 5: 1, 7: 2}),\n",
10836 " '.'): Counter({2: 4, 4: 5, 6: 2, 8: 2}),\n",
10837 " ('x', '.', 'o', '.', '.', 'x', 'o', 'x', 'o'): Counter({1: 3, 3: 3, 4: 3}),\n",
10846 " 'o'): Counter({2: 9, 4: 2, 6: 3, 7: 1}),\n",
10847 " ('x', 'x', 'o', 'o', '.', '.', 'o', 'x', 'x'): Counter({4: 7, 5: 1}),\n",
10848 " ('x', 'x', 'o', '.', '.', 'x', '.', 'o', 'o'): Counter({3: 1, 4: 3, 6: 3}),\n",
10849 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', 'x', 'o'): Counter(),\n",
10858 " '.'): Counter({2: 287, 3: 1, 8: 170}),\n",
10867 " '.'): Counter({2: 106, 7: 397, 8: 246}),\n",
10876 " '.'): Counter({1: 1, 2: 1, 3: 18, 6: 1, 7: 1, 8: 1}),\n",
10885 " '.'): Counter({4: 4, 5: 3, 6: 3, 7: 4, 8: 3}),\n",
10894 " '.'): Counter({3: 2, 4: 5, 5: 3, 8: 2}),\n",
10903 " 'o'): Counter({2: 2, 4: 4, 5: 2, 6: 3, 7: 4}),\n",
10904 " ('x', 'x', 'o', '.', '.', 'o', 'o', 'x', '.'): Counter({3: 2, 4: 6, 8: 3}),\n",
10913 " '.'): Counter({0: 1, 2: 1, 5: 3, 6: 1, 8: 1}),\n",
10922 " 'x'): Counter({2: 2, 3: 1, 4: 2, 7: 2}),\n",
10931 " '.'): Counter({3: 474, 7: 1, 8: 480}),\n",
10940 " 'o'): Counter({2: 22, 3: 1, 4: 1, 6: 1, 7: 1}),\n",
10949 " '.'): Counter({2: 1, 3: 216, 5: 1, 7: 1116, 8: 2}),\n",
10958 " '.'): Counter({3: 376, 4: 181, 5: 313, 7: 85, 8: 341}),\n",
10967 " 'o'): Counter({2: 1, 3: 2, 4: 1, 5: 1}),\n",
10968 " ('x', 'x', 'o', '.', 'o', '.', 'x', 'x', 'o'): Counter({3: 3, 5: 10}),\n",
10969 " ('x', 'x', 'o', '.', '.', 'x', 'x', 'o', 'o'): Counter({3: 3, 4: 1}),\n",
10970 " ('x', 'x', 'o', '.', 'x', '.', 'o', '.', 'o'): Counter({3: 1, 5: 1, 7: 112}),\n",
10979 " '.'): Counter({2: 12, 3: 11, 6: 5, 8: 1}),\n",
10980 " ('x', 'x', '.', 'o', 'o', 'x', 'x', 'o', '.'): Counter({2: 3, 8: 1}),\n",
10981 " ('x', 'x', 'o', 'o', '.', '.', 'x', 'x', 'o'): Counter({4: 3, 5: 6}),\n",
10990 " '.'): Counter({3: 239, 7: 136, 8: 146}),\n",
10991 " ('x', 'x', 'o', 'x', '.', 'o', '.', 'o', '.'): Counter({4: 1, 6: 8, 8: 8}),\n",
11000 " '.'): Counter({0: 1, 2: 1, 3: 1, 5: 3, 6: 1, 7: 1, 8: 1}),\n",
11009 " '.'): Counter({2: 1, 3: 1, 7: 1, 8: 1}),\n",
11010 " ('x', 'x', 'o', 'o', 'x', 'x', '.', 'o', 'o'): Counter({6: 3}),\n",
11019 " '.'): Counter({2: 9, 3: 3, 4: 8, 7: 6, 8: 6}),\n",
11028 " '.'): Counter({2: 1, 3: 1, 4: 1, 5: 1, 7: 1, 8: 1}),\n",
11037 " '.'): Counter({2: 33, 6: 137, 8: 97}),\n",
11038 " ('x', 'x', 'o', '.', '.', 'x', 'o', 'x', 'o'): Counter({3: 1, 4: 5}),\n",
11039 " ('x', 'x', 'o', 'x', '.', 'o', 'o', 'o', 'x'): Counter({4: 23}),\n",
11048 " '.'): Counter({3: 2, 4: 3, 5: 2, 8: 3}),\n",
11049 " ('x', 'x', '.', 'x', 'o', 'o', '.', 'o', '.'): Counter({2: 4, 6: 5, 8: 5}),\n",
11058 " 'x'): Counter({2: 16, 3: 14, 4: 15}),\n",
11059 " ('x', 'x', 'o', 'o', 'x', 'o', 'x', 'o', '.'): Counter({8: 304}),\n",
11060 " ('x', 'o', 'x', 'o', 'o', '.', '.', '.', 'x'): Counter({5: 20, 6: 1, 7: 1}),\n",
11061 " ('x', 'x', '.', '.', 'o', 'x', 'x', 'o', 'o'): Counter({2: 1, 3: 1}),\n",
11070 " '.'): Counter({3: 1, 5: 1, 6: 1, 8: 9}),\n",
11079 " 'x'): Counter({2: 3, 3: 6, 6: 3, 7: 1}),\n",
11080 " ('x', 'o', 'o', 'o', 'x', '.', '.', 'x', '.'): Counter({5: 4, 6: 9, 8: 128}),\n",
11089 " '.'): Counter({3: 2, 4: 2, 5: 2, 8: 2}),\n",
11098 " '.'): Counter({1: 119, 3: 142, 5: 312, 7: 117, 8: 379}),\n",
11107 " '.'): Counter({2: 3, 3: 2, 4: 3, 6: 4, 8: 4}),\n",
11116 " '.'): Counter({2: 73, 3: 32, 6: 1, 7: 1, 8: 2}),\n",
11125 " '.'): Counter({1: 1, 3: 1, 4: 1, 5: 1, 7: 6, 8: 2}),\n",
11134 " '.'): Counter({0: 9, 2: 3, 4: 13, 5: 2, 6: 7, 7: 5, 8: 5}),\n",
11143 " '.'): Counter({2: 15, 3: 1, 5: 3, 8: 4}),\n",
11152 " 'o'): Counter({2: 2, 3: 648, 5: 11, 6: 823, 7: 1}),\n",
11161 " '.'): Counter({1: 1, 2: 1, 3: 1, 6: 2, 8: 10}),\n",
11170 " '.'): Counter({2: 2, 3: 3, 4: 4, 6: 2, 8: 2}),\n",
11171 " ('x', 'o', '.', '.', 'x', 'x', 'o', 'x', 'o'): Counter({2: 1, 3: 3}),\n",
11180 " '.'): Counter({2: 253, 5: 24, 6: 126, 7: 246, 8: 693}),\n",
11181 " ('x', '.', 'o', '.', 'x', 'x', 'o', 'x', 'o'): Counter({1: 1, 3: 1}),\n",
11190 " '.'): Counter({2: 7, 5: 35, 7: 1, 8: 1}),\n",
11199 " 'o'): Counter({2: 3, 3: 3, 4: 3, 7: 2}),\n",
11200 " ('x', 'x', 'o', '.', 'o', 'x', 'x', 'o', '.'): Counter({3: 3, 8: 1}),\n",
11201 " ('x', 'x', 'o', 'o', '.', '.', 'x', '.', 'o'): Counter({4: 1, 5: 3, 7: 1}),\n",
11202 " ('x', 'x', 'o', 'o', 'o', 'x', 'x', '.', '.'): Counter({7: 3, 8: 3}),\n",
11211 " 'o'): Counter({1: 1, 3: 1, 5: 973, 6: 1, 7: 1}),\n",
11212 " ('x', 'x', '.', '.', 'x', 'o', 'x', 'o', 'o'): Counter({2: 21, 3: 1}),\n",
11221 " 'x'): Counter({3: 12, 4: 84, 5: 1, 6: 93, 7: 25}),\n",
11222 " ('x', 'x', 'o', '.', 'x', 'x', '.', 'o', 'o'): Counter({3: 3, 6: 26}),\n",
11223 " ('x', 'o', 'x', '.', '.', '.', 'o', 'x', 'o'): Counter({3: 3, 4: 3, 5: 3}),\n",
11232 " 'o'): Counter({1: 2, 2: 1, 3: 2, 4: 3, 6: 9, 7: 1}),\n",
11233 " ('x', 'o', 'o', 'o', 'x', 'x', '.', 'x', 'o'): Counter({6: 3}),\n",
11234 " ('x', 'x', 'o', '.', 'o', 'x', 'x', 'o', 'o'): Counter({3: 59}),\n",
11243 " 'x'): Counter({2: 12, 5: 13, 6: 4, 7: 1}),\n",
11252 " '.'): Counter({1: 298, 3: 1, 5: 1, 6: 1, 8: 1}),\n",
11261 " '.'): Counter({3: 405, 5: 621, 8: 640}),\n",
11262 " ('x', 'x', 'o', '.', 'o', 'o', 'x', '.', 'x'): Counter({3: 11, 7: 1}),\n",
11263 " ('x', 'x', '.', 'o', '.', 'o', 'x', '.', 'o'): Counter({2: 12, 4: 1, 7: 1}),\n",
11264 " ('o', 'x', '.', '.', 'o', 'x', 'o', 'x', '.'): Counter({2: 3, 3: 1, 8: 2}),\n",
11273 " 'o'): Counter({2: 1, 3: 1, 5: 1, 7: 1}),\n",
11274 " ('o', 'x', 'o', 'x', '.', 'x', '.', 'o', '.'): Counter({4: 4, 6: 3, 8: 3}),\n",
11283 " '.'): Counter({3: 2, 4: 3, 5: 4, 6: 4, 7: 2, 8: 3}),\n",
11292 " '.'): Counter({4: 4, 5: 4, 7: 2, 8: 3}),\n",
11301 " '.'): Counter({2: 3, 3: 3, 4: 5, 8: 3}),\n",
11302 " ('x', 'x', '.', 'o', 'o', 'x', 'o', '.', '.'): Counter({2: 13, 7: 1, 8: 1}),\n",
11311 " 'o'): Counter({2: 342, 5: 1, 7: 72}),\n",
11320 " '.'): Counter({1: 70, 3: 2, 5: 1, 6: 1, 7: 1, 8: 1}),\n",
11329 " '.'): Counter({5: 1, 6: 1, 7: 1, 8: 1}),\n",
11338 " '.'): Counter({2: 1, 6: 3, 7: 1, 8: 1}),\n",
11339 " ('x', 'x', 'o', 'o', 'o', '.', '.', 'x', '.'): Counter({5: 1, 6: 1, 8: 1}),\n",
11340 " ('x', 'x', '.', '.', '.', 'o', 'o', 'x', 'o'): Counter({2: 4, 3: 3, 4: 7}),\n",
11341 " ('x', 'x', 'o', '.', 'o', 'o', '.', '.', 'x'): Counter({3: 1, 6: 1, 7: 1}),\n",
11342 " ('x', 'x', 'o', 'x', '.', '.', '.', 'o', 'o'): Counter({4: 1, 5: 3, 6: 5}),\n",
11351 " '.'): Counter({2: 3, 3: 3, 4: 2, 7: 3, 8: 1}),\n",
11360 " '.'): Counter({1: 1, 3: 2, 4: 4, 6: 2, 7: 2, 8: 1}),\n",
11369 " 'o'): Counter({2: 7, 3: 3, 4: 2, 7: 1}),\n",
11370 " ('x', 'o', '.', '.', 'o', 'x', 'x', '.', 'o'): Counter({2: 1, 3: 24, 7: 4}),\n",
11379 " '.'): Counter({2: 5, 3: 4, 4: 12, 6: 23, 8: 19}),\n",
11388 " '.'): Counter({3: 43, 4: 1, 8: 43})})"
11391 "execution_count": 221,
11393 "output_type": "execute_result"
11397 "p1 = new_menace()\n",
11398 "p2 = new_menace()\n",
11399 "for i in range(100000):\n",
11400 " if random.choice([True, False]):\n",
11401 " g = new_game(p1, p2)\n",
11403 " g = new_game(p2, p1)\n",
11405 " update_players(g)\n",
11410 "cell_type": "code",
11411 "execution_count": 223,
11416 "output_type": "stream",
11418 "You play first.\n",
11423 "Your move (0, 1, 2, 3, 4, 5, 6, 7, 8)? 4\n",
11424 "Opponent moved to 1\n",
11429 "Your move (0, 2, 3, 5, 6, 7, 8)? 0\n",
11430 "Opponent moved to 5\n",
11435 "Your move (2, 3, 6, 7, 8)? 8\n",
11437 "Final position\n",
11446 "# p1 = new_menace()\n",
11447 "ph = new_human()\n",
11448 "if random.choice([True, False]):\n",
11449 " g = new_game(p1, ph)\n",
11451 " g = new_game(ph, p1)\n",
11454 "print('\\nFinal position')\n",
11455 "print(show_board(g['board']))\n",
11456 "if winner(g['board']) is None:\n",
11457 " print('A draw')\n",
11458 "elif winning_player(g) == ph:\n",
11459 " print('You won')\n",
11461 " print('You lost')"
11465 "cell_type": "markdown",
11468 "# Training and testing"
11472 "cell_type": "code",
11473 "execution_count": 224,
11478 "output_type": "stream",
11480 "Wins 9656 games out of 10000 , or 96.56 %\n",
11481 "Draws 307 games out of 10000 , or 3.07 %\n"
11486 "p1 = new_menace()\n",
11487 "p2 = new_menace()\n",
11488 "for i in range(10**5):\n",
11489 " if random.choice([True, False]):\n",
11490 " g = new_game(p1, p2)\n",
11492 " g = new_game(p2, p1)\n",
11494 " update_players(g)\n",
11500 "for _ in range(plays):\n",
11501 " g = new_game(p1, p2)\n",
11503 " if winner(g['board']) is None:\n",
11505 " elif winning_player(g) == p1: \n",
11507 "print(\"Wins\", wins, \"games out of\", plays, \", or \", (100.0 * wins) / plays, \"%\")\n",
11508 "print(\"Draws\", draws, \"games out of\", plays, \", or \", (100.0 * draws) / plays, \"%\")\n",
11514 "cell_type": "code",
11515 "execution_count": 225,
11520 "output_type": "stream",
11522 "Wins 9783 games out of 10000 , or 97.83 %\n",
11523 "Draws 212 games out of 10000 , or 2.12 %\n"
11528 "p1 = new_menace()\n",
11529 "p2 = new_menace()\n",
11530 "for i in range(10**6):\n",
11531 " if random.choice([True, False]):\n",
11532 " g = new_game(p1, p2)\n",
11534 " g = new_game(p2, p1)\n",
11536 " update_players(g)\n",
11542 "for _ in range(plays):\n",
11543 " g = new_game(p1, p2)\n",
11545 " if winner(g['board']) is None:\n",
11547 " elif winning_player(g) == p1: \n",
11549 "print(\"Wins\", wins, \"games out of\", plays, \", or \", (100.0 * wins) / plays, \"%\")\n",
11550 "print(\"Draws\", draws, \"games out of\", plays, \", or \", (100.0 * draws) / plays, \"%\")\n",
11556 "cell_type": "code",
11557 "execution_count": 226,
11562 "output_type": "stream",
11564 "Wins 9981 games out of 10000 , or 99.81 %\n",
11565 "Draws 19 games out of 10000 , or 0.19 %\n"
11570 "p1 = new_menace()\n",
11571 "p2 = new_menace()\n",
11572 "for i in range(100000):\n",
11573 " if random.choice([True, False]):\n",
11574 " g = new_game(p1, p2)\n",
11576 " g = new_game(p2, p1)\n",
11578 " update_players(g, allow_drop_move=True)\n",
11584 "for _ in range(plays):\n",
11585 " g = new_game(p1, p2)\n",
11587 " if winner(g['board']) is None:\n",
11589 " elif winning_player(g) == p1: \n",
11591 "print(\"Wins\", wins, \"games out of\", plays, \", or \", (100.0 * wins) / plays, \"%\")\n",
11592 "print(\"Draws\", draws, \"games out of\", plays, \", or \", (100.0 * draws) / plays, \"%\")\n",
11598 "cell_type": "code",
11599 "execution_count": 227,
11604 "output_type": "stream",
11606 "Wins 5627 games out of 10000 , or 56.27 %\n",
11607 "Draws 1316 games out of 10000 , or 13.16 %\n"
11612 "p1 = new_menace()\n",
11613 "p2 = new_menace()\n",
11614 "for _ in range(100):\n",
11615 " if random.choice([True, False]):\n",
11616 " g = new_game(p1, p2)\n",
11618 " g = new_game(p2, p1)\n",
11620 " update_players(g)\n",
11625 "for _ in range(plays):\n",
11626 " g = new_game(p1, p2)\n",
11628 " if winner(g['board']) is None:\n",
11630 " elif winning_player(g) == p1: \n",
11633 "print(\"Wins\", wins, \"games out of\", plays, \", or \", (100.0 * wins) / plays, \"%\")\n",
11634 "print(\"Draws\", draws, \"games out of\", plays, \", or \", (100.0 * draws) / plays, \"%\")\n",
11636 "p_parttrained = p1"
11640 "cell_type": "code",
11641 "execution_count": 228,
11647 "newbie = new_menace()"
11651 "cell_type": "code",
11652 "execution_count": 229,
11658 "players = [p_floor1, p_floor0, newbie, p_parttrained, p_floor1m]\n",
11659 "player_names = ['Floor 1', 'Floor 0', 'Newbie', 'Part trained', 'Floor 1, million train']"
11663 "cell_type": "code",
11664 "execution_count": 230,
11670 "def count_wins(p1, p2, plays=1000):\n",
11673 " for _ in range(plays):\n",
11674 " g = new_game(p1, p2)\n",
11676 " if winner(g['board']) is None:\n",
11678 " elif winning_player(g) == p1: \n",
11680 " return wins, draws"
11684 "cell_type": "code",
11685 "execution_count": 231,
11691 "{(0, 0): (983, 17),\n",
11692 " (0, 1): (21, 977),\n",
11693 " (0, 2): (978, 18),\n",
11694 " (0, 3): (978, 20),\n",
11695 " (0, 4): (973, 26),\n",
11696 " (1, 0): (376, 137),\n",
11697 " (1, 1): (725, 275),\n",
11698 " (1, 2): (680, 115),\n",
11699 " (1, 3): (654, 129),\n",
11700 " (1, 4): (390, 131),\n",
11701 " (2, 0): (360, 105),\n",
11702 " (2, 1): (243, 161),\n",
11703 " (2, 2): (880, 120),\n",
11704 " (2, 3): (573, 148),\n",
11705 " (2, 4): (271, 135),\n",
11706 " (3, 0): (331, 110),\n",
11707 " (3, 1): (232, 186),\n",
11708 " (3, 2): (586, 131),\n",
11709 " (3, 3): (875, 125),\n",
11710 " (3, 4): (264, 122),\n",
11711 " (4, 0): (924, 75),\n",
11712 " (4, 1): (503, 496),\n",
11713 " (4, 2): (983, 17),\n",
11714 " (4, 3): (992, 8),\n",
11715 " (4, 4): (903, 97)}"
11718 "execution_count": 231,
11720 "output_type": "execute_result"
11726 "for i, p1 in enumerate(players):\n",
11727 " for j, p2 in enumerate(players):\n",
11728 " results[i, j] = count_wins(p1, p2)\n",
11733 "cell_type": "code",
11734 "execution_count": 232,
11740 "<table border=1>\n",
11741 "<tr><td> </td><td> </td><th colspan=5>Player 1</th></tr>\n",
11742 "<tr><td> </td><td> </td><td>Floor 1</td><td>Floor 0</td><td>Newbie</td><td>Part trained</td><td>Floor 1, million train</td></tr>\n",
11744 "<th rowspan=5>Player 2</th>\n",
11745 "<td>Floor 1</td> <td>983 / 17</td>\n",
11746 " <td>376 / 137</td>\n",
11747 " <td>360 / 105</td>\n",
11748 " <td>331 / 110</td>\n",
11749 " <td>924 / 75</td>\n",
11752 "<td>Floor 0</td> <td>21 / 977</td>\n",
11753 " <td>725 / 275</td>\n",
11754 " <td>243 / 161</td>\n",
11755 " <td>232 / 186</td>\n",
11756 " <td>503 / 496</td>\n",
11759 "<td>Newbie</td> <td>978 / 18</td>\n",
11760 " <td>680 / 115</td>\n",
11761 " <td>880 / 120</td>\n",
11762 " <td>586 / 131</td>\n",
11763 " <td>983 / 17</td>\n",
11766 "<td>Part trained</td> <td>978 / 20</td>\n",
11767 " <td>654 / 129</td>\n",
11768 " <td>573 / 148</td>\n",
11769 " <td>875 / 125</td>\n",
11770 " <td>992 / 8</td>\n",
11773 "<td>Floor 1, million train</td> <td>973 / 26</td>\n",
11774 " <td>390 / 131</td>\n",
11775 " <td>271 / 135</td>\n",
11776 " <td>264 / 122</td>\n",
11777 " <td>903 / 97</td>\n",
11782 "<IPython.core.display.HTML object>"
11786 "output_type": "display_data"
11790 "result_table = '<table border=1>\\n'\n",
11791 "result_table += '<tr><td> </td><td> </td><th colspan={}>Player 1</th></tr>\\n'.format(len(players))\n",
11792 "result_table += '<tr><td> </td><td> </td>'\n",
11793 "for i in range(len(players)):\n",
11794 " result_table += '<td>{}</td>'.format(player_names[i])\n",
11795 "result_table += '</tr>\\n'\n",
11797 "for i in range(len(players)):\n",
11798 " result_table += '<tr>\\n'\n",
11800 " result_table += '<th rowspan={}>Player 2</th>\\n'.format(len(players))\n",
11801 " result_table += '<td>{}</td>'.format(player_names[i])\n",
11802 " for j in range(len(players)):\n",
11803 " result_table += ' <td>{} / {}</td>\\n'.format(results[j, i][0], results[j, i][1])\n",
11804 " result_table += '</tr>\\n'\n",
11805 "result_table += \"</table>\"\n",
11806 "# print(result_table)\n",
11807 "display(HTML(result_table))"
11811 "cell_type": "code",
11812 "execution_count": 233,
11817 "output_type": "stream",
11819 "... ... ... ... ... ... ..o .xo .xo xxo\n",
11820 "... .x. .x. .xx oxx oxx oxx oxx oxx oxx\n",
11821 "... ... ..o ..o ..o x.o x.o x.o xoo xoo\n"
11826 "g = new_game(p_floor1m, p_floor0)\n",
11828 "print(show_boards([m['board'] for m in g['history']] + [g['board']]))"
11832 "cell_type": "code",
11833 "execution_count": 234,
11838 "output_type": "stream",
11840 "... x.. x.. x.. x.o x.o xoo xoo xoo\n",
11841 "... ... ... ..x ..x ..x ..x ..x .ox\n",
11842 "... ... o.. o.. o.. ox. ox. oxx oxx\n"
11847 "g = new_game(p_floor0, p_floor0)\n",
11849 "print(show_boards([m['board'] for m in g['history']] + [g['board']]))"
11853 "cell_type": "code",
11854 "execution_count": 235,
11859 "output_type": "stream",
11863 ".xo Counter({3: 4, 6: 3, 1: 2}) \n",
11867 ".x. Counter({4: 5, 8: 3, 3: 3, 5: 3, 6: 3}) \n",
11871 "oox Counter({2: 3, 4: 3}) \n",
11875 ".o. Counter({2: 6, 1: 4, 8: 3, 3: 3, 6: 3}) \n",
11879 "..o Counter({2: 3, 3: 3, 6: 3, 7: 2}) \n",
11883 "x.. Counter({8: 3, 3: 3, 4: 3, 7: 3, 2: 2}) \n",
11887 "oxo Counter({2: 7, 3: 1}) \n",
11891 "xo. Counter({8: 3, 2: 3, 4: 3, 5: 3}) \n",
11895 "oxo Counter({2: 5, 4: 4, 3: 1, 5: 1}) \n",
11899 "... Counter({8: 6, 7: 5, 3: 4, 5: 4, 2: 3, 4: 3, 6: 2}) \n",
11903 "... Counter({5: 3, 8: 2, 6: 2, 7: 2}) \n",
11907 ".xo Counter({3: 3, 6: 0}) \n",
11911 "oox Counter({5: 3, 2: 2, 3: 2, 4: 2}) \n",
11915 "... Counter({6: 7, 8: 5, 3: 3, 7: 3}) \n",
11919 ".x. Counter({8: 7, 6: 4, 3: 3}) \n",
11923 "xoo Counter({2: 3, 4: 1}) \n",
11927 ".x. Counter({8: 3, 2: 3, 3: 2, 6: 2}) \n",
11931 "oo. Counter({2: 5, 8: 3, 3: 3}) \n",
11935 "... Counter({0: 3, 8: 3, 2: 3, 6: 3, 7: 1}) \n",
11939 "... Counter({4: 4, 8: 4, 6: 3, 7: 3, 2: 2, 5: 2}) \n",
11943 ".xo Counter({2: 3, 6: 2}) \n",
11947 ".x. Counter({1: 4, 3: 4, 6: 4, 8: 3, 5: 3}) \n",
11951 "..o Counter({5: 7, 7: 5, 6: 4, 3: 3}) \n",
11955 "o.o Counter({7: 8, 4: 7}) \n",
11959 ".x. Counter({8: 4, 6: 4, 4: 3, 1: 2, 3: 2}) \n",
11963 "o.x Counter({4: 3, 5: 3, 7: 3}) \n",
11967 ".oo Counter({2: 3, 6: 3, 3: 1}) \n",
11971 "... Counter({8: 3, 7: 3, 6: 2, 2: 1, 3: 1}) \n",
11975 ".o. Counter({8: 5, 2: 3, 3: 3, 5: 3, 6: 3}) \n",
11979 ".o. Counter({3: 4, 8: 3, 1: 3, 4: 3, 6: 3}) \n",
11983 "ox. Counter({8: 8}) \n",
11987 ".xo Counter({4: 4, 5: 3, 6: 3}) \n",
11991 "... Counter({4: 7, 1: 0, 2: 0, 3: 0, 6: 0, 7: 0, 8: 0}) \n",
11995 "..o Counter({3: 3, 5: 3, 6: 3, 7: 3, 4: 2}) \n",
11999 "oo. Counter({2: 4, 8: 3, 4: 3}) \n",
12003 "... Counter({2: 5, 3: 5, 8: 4, 6: 4, 7: 1}) \n",
12007 "..o Counter({6: 6, 7: 5, 2: 4, 3: 3, 5: 3}) \n",
12011 "... Counter({6: 4, 8: 3, 4: 3, 7: 3}) \n",
12015 "... Counter({8: 3, 6: 3, 7: 2}) \n",
12019 ".x. Counter({2: 4, 8: 3, 3: 3, 6: 3}) \n",
12023 "xoo Counter({5: 12, 3: 3}) \n",
12027 "... Counter({4: 7, 7: 4, 8: 4, 1: 3, 2: 3, 3: 3, 6: 3}) \n",
12031 "... Counter({7: 5, 2: 0, 3: 0, 5: 0, 6: 0, 8: 0}) \n",
12035 "..o Counter({6: 3, 3: 2, 7: 2}) \n",
12039 "..o Counter({6: 4, 2: 3, 5: 3, 7: 2}) \n",
12043 "..o Counter({2: 5, 6: 4, 7: 3}) \n",
12047 "oo. Counter({8: 7, 2: 2}) \n",
12051 ".xo Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3}) \n",
12055 "xoo Counter({2: 12}) \n",
12059 ".xo Counter({3: 5, 2: 3, 6: 1}) \n",
12063 "... Counter({8: 3, 2: 3, 6: 3, 7: 2}) \n",
12067 "ox. Counter({8: 3, 2: 3, 4: 3, 5: 3}) \n",
12071 "oo. Counter({8: 5, 5: 2, 3: 1}) \n",
12075 "xo. Counter({8: 3, 4: 3}) \n",
12079 "... Counter({8: 3, 3: 3, 7: 3, 6: 2}) \n",
12083 ".x. Counter({2: 4, 5: 4, 6: 4, 8: 3}) \n",
12087 ".ox Counter({2: 3, 3: 3, 4: 3, 5: 3, 6: 3}) \n",
12091 "o.x Counter({4: 4, 5: 3, 7: 3}) \n",
12095 "..o Counter({2: 3, 6: 3, 3: 2, 7: 1}) \n",
12099 "xoo Counter({2: 5, 3: 3, 4: 3}) \n",
12103 ".ox Counter({3: 3, 5: 3, 6: 3, 2: 2}) \n",
12107 "... Counter({4: 4, 8: 3, 5: 3, 6: 3, 7: 3}) \n",
12111 ".oo Counter({6: 5, 4: 1}) \n",
12115 ".x. Counter({8: 3, 6: 0}) \n",
12119 "x.o Counter({3: 3, 7: 1}) \n",
12123 "ox. Counter({4: 4, 8: 3, 3: 3, 5: 3}) \n",
12127 "..o Counter({6: 5, 1: 3, 7: 3, 2: 2, 3: 2}) \n",
12131 "..o Counter({6: 4, 5: 3, 7: 3}) \n",
12135 "..o Counter({2: 3, 5: 3, 6: 3, 7: 3}) \n",
12139 "..o Counter({5: 3, 7: 3, 6: 2}) \n",
12143 "oxo Counter({2: 4, 5: 3, 3: 2}) \n",
12147 ".ox Counter({6: 3}) \n",
12151 ".o. Counter({8: 3, 2: 3, 5: 3, 6: 3, 0: 2}) \n",
12155 "... Counter({8: 15, 0: 0, 1: 0, 2: 0, 3: 0, 5: 0, 6: 0, 7: 0}) \n",
12159 "o.o Counter({7: 8, 3: 0}) \n",
12163 "... Counter({7: 5, 8: 4, 6: 3}) \n",
12167 ".o. Counter({3: 6, 6: 6, 0: 3, 2: 3, 5: 3, 8: 2, 4: 1}) \n",
12171 "xoo Counter({2: 3, 4: 3, 5: 3}) \n",
12175 "xoo Counter({4: 3}) \n",
12179 "xo. Counter({8: 3, 2: 3, 3: 3, 4: 3, 5: 3}) \n",
12183 "... Counter({0: 3, 2: 3, 8: 3, 5: 2, 6: 2, 7: 2}) \n",
12187 ".x. Counter({4: 4, 5: 3, 6: 3, 2: 2, 8: 1}) \n",
12191 "... Counter({8: 5, 6: 3, 7: 3}) \n",
12195 ".o. Counter({3: 4, 8: 3, 6: 3}) \n",
12199 "o.. Counter({4: 7, 8: 4, 7: 3, 3: 2}) \n",
12203 ".xx Counter({3: 5, 6: 3}) \n",
12207 "... Counter({8: 3, 2: 3, 6: 3, 7: 3}) \n",
12211 "oo. Counter({8: 9}) \n",
12215 "..o Counter({6: 5, 2: 3, 7: 2}) \n",
12219 ".ox Counter({4: 3, 5: 3, 6: 3}) \n",
12223 "... Counter({8: 6, 5: 4, 7: 4, 3: 3, 6: 3}) \n",
12227 "... Counter({4: 4, 5: 3, 7: 3, 8: 3, 2: 2, 6: 2}) \n",
12231 ".o. Counter({6: 5, 2: 4, 3: 3, 4: 3, 8: 3, 1: 2}) \n",
12235 ".oo Counter({3: 1, 5: 0, 6: 0}) \n",
12239 ".o. Counter({8: 3, 4: 3, 6: 3, 3: 2, 2: 1}) \n",
12243 ".xo Counter({2: 3, 4: 3, 6: 3}) \n",
12247 "xox Counter() \n",
12251 "x.. Counter({3: 3, 5: 3, 7: 1, 8: 0}) \n",
12255 "xo. Counter({3: 3, 5: 3, 2: 2, 8: 0}) \n",
12259 "xoo Counter({5: 3}) \n",
12263 "..x Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3}) \n",
12267 "xox Counter({3: 1, 4: 0}) \n",
12271 "..x Counter({7: 1, 1: 0, 3: 0, 4: 0, 5: 0, 6: 0}) \n",
12275 "..x Counter({1: 3, 3: 3, 5: 3, 6: 3, 7: 3}) \n",
12279 "o.. Counter({7: 6, 3: 5, 8: 4, 1: 4, 5: 3}) \n",
12283 "o.o Counter({7: 12, 5: 4, 2: 2, 3: 2}) \n",
12287 "o.o Counter({3: 3, 5: 3, 7: 3}) \n",
12291 ".xo Counter({3: 2, 4: 2, 6: 2, 1: 1}) \n",
12295 ".o. Counter({5: 6, 3: 5, 6: 4, 8: 3, 1: 2}) \n",
12299 "ox. Counter({8: 8}) \n",
12303 "xo. Counter({5: 4, 8: 3, 3: 3}) \n",
12307 "..o Counter({7: 3, 6: 0}) \n",
12311 "xoo Counter({3: 3, 4: 3, 5: 3}) \n",
12315 "ox. Counter({1: 2, 5: 1, 8: 0, 3: 0}) \n",
12319 ".o. Counter({8: 3, 2: 3, 6: 3}) \n",
12323 ".o. Counter({1: 3, 6: 3, 8: 2, 3: 2, 2: 1}) \n",
12327 "oo. Counter({8: 12}) \n",
12331 ".x. Counter({2: 4, 4: 3, 5: 3, 8: 3, 3: 2, 6: 2}) \n",
12335 ".xo Counter({5: 3, 6: 2, 3: 1}) \n",
12339 ".xo Counter({5: 7, 4: 5, 3: 2, 6: 2}) \n",
12343 ".o. Counter({8: 3, 6: 0}) \n",
12347 ".o. Counter({8: 3, 3: 3, 5: 3, 6: 3}) \n",
12351 "x.o Counter({3: 6, 2: 5, 7: 1}) \n",
12355 "xx. Counter({5: 6, 8: 3}) \n",
12359 "xo. Counter({8: 3}) \n",
12363 "... Counter({1: 39, 2: 18, 8: 10, 7: 6, 5: 4, 6: 2, 3: 0}) \n",
12367 ".oo Counter({2: 4, 3: 3, 4: 3, 6: 3, 1: 2}) \n",
12371 "... Counter({2: 7, 3: 2, 5: 1, 6: 1, 8: 1, 7: 0}) \n",
12375 "x.o Counter({2: 3, 3: 3, 4: 3, 5: 3, 7: 3}) \n",
12379 ".x. Counter({6: 4, 8: 3}) \n",
12383 ".x. Counter({5: 4, 8: 0, 6: 0}) \n",
12387 "..o Counter({3: 6, 6: 4, 7: 3}) \n",
12391 ".xo Counter({2: 4, 1: 3, 3: 3, 6: 3}) \n",
12395 ".x. Counter({0: 3, 2: 3, 4: 3, 6: 3, 8: 3, 5: 2}) \n",
12399 ".x. Counter({4: 4, 8: 3, 6: 3}) \n",
12403 ".o. Counter({6: 4, 8: 3, 4: 3, 5: 3}) \n",
12407 "oxo Counter({2: 10}) \n",
12411 "x.o Counter({2: 3, 3: 3, 7: 3, 5: 2}) \n",
12415 "..o Counter({2: 4, 3: 4, 5: 4, 6: 4, 7: 4, 1: 2, 4: 2}) \n",
12419 "x.. Counter({5: 3, 7: 3, 8: 2}) \n",
12423 "o.. Counter({8: 4, 4: 3, 7: 3}) \n",
12427 ".oo Counter({2: 3, 4: 3, 6: 3}) \n",
12431 "x.x Counter({3: 4, 7: 4, 2: 2}) \n",
12435 "o.. Counter({8: 3, 5: 3, 7: 2, 3: 1}) \n",
12439 ".x. Counter({8: 3, 4: 3, 5: 3, 6: 3}) \n",
12443 "oox Counter({3: 3, 4: 3, 5: 3}) \n",
12447 "o.. Counter({7: 6, 8: 4, 5: 3}) \n",
12451 "o.. Counter({5: 6, 8: 4, 2: 3, 3: 3, 7: 3}) \n",
12455 "x.x Counter({3: 3, 4: 3, 7: 3}) \n",
12459 "x.o Counter({5: 3, 1: 2, 3: 2, 7: 2}) \n",
12463 "xo. Counter({8: 3, 2: 3, 3: 3}) \n",
12467 "x.o Counter({7: 3}) \n",
12471 "x.. Counter({8: 4, 5: 4, 4: 3, 7: 2}) \n",
12475 "o.x Counter({3: 3, 4: 3, 7: 2}) \n",
12479 ".o. Counter({8: 3, 2: 3, 6: 3}) \n",
12483 ".o. Counter({6: 4, 8: 3, 2: 3, 5: 2}) \n",
12487 "o.. Counter({8: 4, 4: 3, 7: 3}) \n",
12491 "..x Counter({2: 3, 4: 3, 7: 3, 6: 2}) \n",
12495 ".ox Counter({4: 2, 6: 2}) \n",
12499 "oxo Counter({2: 3, 3: 3, 4: 3}) \n",
12503 ".xx Counter({4: 5, 6: 2}) \n",
12507 "x.. Counter({3: 9, 5: 4, 7: 4, 8: 2, 2: 2}) \n",
12511 "... Counter({5: 4, 6: 3, 7: 3, 8: 2}) \n",
12515 "x.x Counter({4: 4, 7: 2}) \n",
12519 "oxo Counter({1: 3, 3: 0, 4: 0, 5: 0}) \n",
12523 "x.o Counter({2: 3, 7: 0}) \n",
12527 "x.. Counter({7: 7, 3: 4, 8: 3}) \n",
12531 ".xo Counter({4: 3, 6: 1}) \n",
12535 "o.o Counter({4: 3, 7: 3, 3: 2}) \n",
12539 ".xo Counter({3: 3, 4: 3, 5: 3, 6: 3, 2: 2}) \n",
12543 "x.o Counter({4: 3, 7: 3}) \n",
12547 ".xo Counter({6: 3}) \n",
12551 ".o. Counter({8: 3, 2: 3, 6: 3, 3: 2}) \n",
12555 "xox Counter({4: 5}) \n",
12559 ".o. Counter({2: 5, 3: 5, 5: 4, 8: 3, 6: 2}) \n",
12563 ".xo Counter({5: 4, 2: 3, 6: 3}) \n",
12567 "xo. Counter({2: 3, 8: 2}) \n",
12571 "... Counter({7: 6, 8: 4, 6: 4, 2: 3, 5: 2}) \n",
12575 "o.x Counter({4: 7, 7: 0}) \n",
12579 "o.o Counter({7: 12, 2: 1}) \n",
12583 "... Counter({2: 48625, 5: 1, 8: 0, 6: 0, 7: 0}) \n",
12587 ".x. Counter({6: 6, 3: 3, 8: 2, 5: 2, 1: 1}) \n",
12591 "o.x Counter({2: 3, 3: 3, 7: 3}) \n",
12595 "... Counter({8: 3, 2: 3, 5: 3, 7: 3, 6: 2}) \n",
12599 "... Counter({6: 4, 0: 3, 7: 3, 8: 3, 4: 2, 2: 1}) \n",
12603 "o.x Counter({4: 7, 5: 3, 7: 3, 3: 2}) \n",
12607 "... Counter({6: 14, 0: 0, 2: 0, 3: 0, 4: 0, 5: 0, 7: 0, 8: 0}) \n",
12611 "o.o Counter({3: 3, 7: 3, 2: 2}) \n",
12615 "o.. Counter({3: 2, 8: 1, 7: 1, 1: 0}) \n",
12619 "... Counter({8: 5, 6: 5, 7: 3}) \n",
12623 ".o. Counter({8: 3, 3: 3, 4: 3, 5: 3, 6: 3}) \n",
12627 ".xo Counter({2: 4, 6: 2, 3: 1}) \n",
12631 ".ox Counter({6: 3, 2: 0}) \n",
12635 "xox Counter({2: 3, 4: 3}) \n",
12639 ".o. Counter({0: 3, 8: 3, 2: 3, 6: 3}) \n",
12643 "... Counter({1: 46163, 3: 2460, 2: 8, 5: 0, 6: 0, 7: 0, 8: 0}) \n",
12647 ".x. Counter({6: 7, 8: 3, 1: 3, 3: 3}) \n",
12651 "oxo Counter({4: 4}) \n",
12655 "..o Counter({6: 6, 4: 4, 3: 3, 7: 3}) \n",
12659 ".o. Counter({8: 4, 6: 4, 3: 3}) \n",
12663 "o.. Counter({8: 4, 4: 4, 5: 3, 7: 3, 3: 2}) \n",
12667 "xoo Counter({2: 11}) \n",
12671 "... Counter({6: 4, 7: 4, 2: 3, 3: 3, 8: 2}) \n",
12675 ".x. Counter({8: 3, 5: 3, 6: 2}) \n",
12679 "x.o Counter({5: 7, 3: 6, 7: 4, 4: 3}) \n",
12683 "oo. Counter({8: 12, 5: 3, 2: 2, 3: 0}) \n",
12687 ".oo Counter({2: 3, 4: 3, 6: 2}) \n",
12691 ".x. Counter({6: 3, 8: 2, 2: 1}) \n",
12695 "x.. Counter({8: 3, 3: 3, 4: 3, 7: 3}) \n",
12699 ".oo Counter({2: 3, 6: 3, 3: 2, 4: 2}) \n",
12703 ".x. Counter({3: 5, 6: 5, 8: 4, 5: 4}) \n",
12707 ".x. Counter({6: 7, 8: 3, 3: 2}) \n",
12711 ".o. Counter({0: 3, 8: 3, 2: 3, 6: 3}) \n",
12715 "o.o Counter({7: 7, 2: 6, 3: 0}) \n",
12719 "oox Counter({4: 4}) \n",
12723 "..o Counter({6: 5, 2: 4, 7: 4}) \n",
12727 ".o. Counter({8: 7, 6: 2}) \n",
12731 ".ox Counter({4: 8, 6: 1, 3: 0, 5: 0}) \n",
12735 "ox. Counter({8: 3, 3: 3, 4: 3}) \n",
12739 "... Counter({3: 6, 6: 5, 7: 4, 1: 3, 4: 3, 5: 3, 8: 3}) \n",
12743 "... Counter({7: 5, 6: 4, 8: 3, 1: 3, 3: 3}) \n",
12747 ".x. Counter({6: 3, 8: 1}) \n",
12751 ".o. Counter({0: 3, 8: 3, 2: 3, 4: 3, 6: 3}) \n",
12755 ".oo Counter({2: 3, 6: 3}) \n",
12759 "x.. Counter({3: 8, 8: 3, 7: 1}) \n",
12763 "o.o Counter({2: 6, 7: 6, 4: 4, 3: 3}) \n",
12767 ".x. Counter({6: 4, 8: 3}) \n",
12771 "x.o Counter({3: 3, 7: 2}) \n",
12775 ".x. Counter({8: 4, 1: 3, 3: 3, 6: 2}) \n",
12779 "... Counter({7: 6, 8: 4, 6: 2}) \n",
12783 "oo. Counter({3: 5, 8: 3, 1: 3}) \n",
12787 "x.. Counter({7: 5, 3: 3, 8: 2, 2: 0}) \n",
12791 "ox. Counter({8: 3, 2: 3, 3: 2}) \n",
12795 "x.o Counter({2: 5, 5: 3, 7: 3}) \n",
12799 "ox. Counter({4: 4, 2: 3, 8: 2}) \n",
12803 ".o. Counter({8: 3, 5: 3, 6: 3}) \n",
12807 "xo. Counter({2: 3, 5: 3, 3: 2, 8: 1}) \n",
12811 "... Counter({4: 3, 8: 3, 2: 2, 3: 2, 7: 2, 6: 1}) \n",
12815 "... Counter({6: 1, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 7: 0, 8: 0}) \n",
12819 ".o. Counter({6: 3, 8: 0, 2: 0}) \n",
12823 "oxo Counter({3: 6, 2: 3, 5: 3}) \n",
12827 "..o Counter({3: 2, 1: 0, 6: 0, 7: 0}) \n",
12831 "x.. Counter({8: 3, 4: 3, 5: 3, 7: 3}) \n",
12835 "o.o Counter({5: 3, 4: 1, 7: 1}) \n",
12839 ".ox Counter({3: 4, 4: 3, 6: 3}) \n",
12843 "x.. Counter({8: 3, 4: 3, 7: 3}) \n",
12847 "xo. Counter({8: 3, 3: 3, 4: 3}) \n",
12851 "x.. Counter({8: 3, 4: 3, 7: 2}) \n",
12855 "..x Counter({6: 4, 4: 3, 7: 3}) \n",
12859 "..o Counter({2: 3, 5: 3, 6: 2, 7: 2}) \n",
12863 "o.o Counter({7: 12}) \n",
12867 "oo. Counter({8: 4, 2: 3, 3: 3, 4: 3}) \n",
12871 "..x Counter({4: 4, 5: 4, 2: 3, 6: 3, 7: 3}) \n",
12875 ".x. Counter({8: 4, 2: 3, 3: 3, 4: 3, 6: 3}) \n",
12879 "... Counter({0: 4, 8: 4, 2: 3, 6: 3, 7: 3}) \n",
12883 ".xo Counter({2: 3, 3: 3, 4: 3, 6: 3}) \n",
12887 "..x Counter({5: 3, 7: 3, 6: 1}) \n",
12891 "xxo Counter({5: 3}) \n",
12895 ".x. Counter({3: 4, 6: 4, 8: 4, 0: 3, 2: 3, 5: 3}) \n",
12899 "xoo Counter() \n",
12903 ".xo Counter({6: 6, 3: 3}) \n",
12907 "xox Counter({3: 9}) \n",
12911 "ox. Counter({3: 1, 8: 0}) \n",
12915 "o.o Counter({2: 4, 3: 3, 7: 3}) \n",
12919 "x.o Counter({5: 10, 7: 3}) \n",
12923 "... Counter({7: 2, 8: 0, 2: 0, 6: 0}) \n",
12927 "o.. Counter({2: 9, 8: 5, 5: 2, 7: 2, 4: 1, 3: 0}) \n",
12931 "oxo Counter({5: 5, 1: 3, 3: 3}) \n",
12935 "o.o Counter({1: 3, 3: 3, 4: 3, 5: 3, 7: 3}) \n",
12939 "..x Counter({4: 6, 6: 4, 5: 2, 7: 2}) \n",
12943 "... Counter({8: 3, 4: 3, 5: 3, 6: 3, 7: 3}) \n",
12947 ".xo Counter({4: 4, 3: 3, 6: 3}) \n",
12951 "x.. Counter({2: 4, 8: 3, 4: 3, 7: 2}) \n",
12955 "o.. Counter({8: 3, 7: 3, 3: 2, 5: 2}) \n",
12959 ".ox Counter({2: 3, 3: 3, 4: 3, 6: 3}) \n",
12963 "o.. Counter({8: 4, 5: 3, 7: 3}) \n",
12967 "o.. Counter({2: 4, 8: 3, 4: 3, 5: 3, 7: 3}) \n",
12971 ".x. Counter({3: 5, 8: 3, 5: 3, 6: 3, 4: 2}) \n",
12975 "... Counter({2: 7, 7: 6, 0: 4, 3: 4, 5: 4, 6: 4, 8: 4}) \n",
12979 ".ox Counter({4: 3, 6: 2}) \n",
12983 ".o. Counter({8: 3, 6: 3, 1: 2, 3: 2}) \n",
12987 ".xo Counter({6: 3, 5: 0}) \n",
12991 "ox. Counter({2: 3, 3: 3, 4: 3, 5: 3, 8: 2}) \n",
12995 "ox. Counter({8: 3, 4: 3, 5: 3}) \n",
12999 ".x. Counter({8: 4, 4: 4, 6: 3}) \n",
13003 "ox. Counter({8: 5, 3: 4, 2: 3}) \n",
13007 "o.. Counter({2: 9, 8: 2, 7: 1, 3: 0}) \n",
13011 ".o. Counter({6: 4, 8: 3, 2: 3, 3: 3, 4: 3}) \n",
13015 "ox. Counter({2: 8, 8: 3}) \n",
13019 ".xo Counter({5: 6, 1: 4, 6: 3, 3: 2}) \n",
13023 "x.o Counter({4: 4, 5: 3, 7: 3}) \n",
13027 "..o Counter({3: 3, 6: 3, 7: 3, 2: 0}) \n",
13031 "xo. Counter({8: 3, 2: 3, 3: 3, 4: 3}) \n",
13035 ".x. Counter({8: 3, 4: 3, 6: 3}) \n",
13039 "xo. Counter({8: 3, 4: 3, 5: 3}) \n",
13043 "x.o Counter({5: 4, 3: 3, 7: 3}) \n",
13047 "..o Counter({6: 5, 7: 4, 4: 3, 5: 3}) \n",
13051 ".o. Counter({8: 3, 3: 3, 4: 3, 5: 3, 6: 3}) \n",
13055 "..o Counter({6: 7, 7: 2}) \n",
13059 "... Counter({6: 10, 7: 3, 2: 2, 8: 0}) \n",
13063 "oox Counter({5: 6, 2: 3, 4: 3}) \n",
13067 "o.x Counter({2: 4, 4: 3, 7: 3}) \n",
13071 ".oo Counter({6: 6, 2: 5, 5: 4, 3: 2}) \n",
13075 "x.x Counter({7: 4, 3: 3, 5: 1}) \n",
13079 "oxo Counter({3: 3, 5: 3}) \n",
13083 ".x. Counter({8: 3, 3: 3, 5: 3, 6: 3}) \n",
13087 "xo. Counter({8: 2, 3: 2}) \n",
13091 "o.. Counter({2: 6, 5: 6, 3: 4, 8: 2, 7: 2}) \n",
13095 "... Counter({2: 4, 7: 4, 3: 3, 8: 3, 4: 2, 6: 2}) \n",
13099 ".ox Counter({6: 3, 3: 2, 5: 1}) \n",
13103 "oxo Counter({5: 3}) \n",
13107 "xoo Counter({2: 3, 5: 2}) \n",
13111 ".x. Counter({8: 4, 6: 4, 4: 3, 3: 0}) \n",
13115 "... Counter({8: 5, 3: 4, 7: 4, 2: 3, 6: 2}) \n",
13119 ".oo Counter({6: 5, 2: 2}) \n",
13123 "ox. Counter({4: 5, 8: 3, 1: 3, 3: 2}) \n",
13127 "o.x Counter({2: 4, 7: 2}) \n",
13131 ".x. Counter({8: 4, 0: 3, 4: 3, 6: 3, 2: 2}) \n",
13135 "oxo Counter({3: 3, 4: 3, 5: 3}) \n",
13139 "o.o Counter({1: 8, 7: 5, 3: 2, 5: 2}) \n",
13143 "... Counter({5: 6, 6: 5, 8: 3, 7: 3}) \n",
13147 ".xo Counter({6: 4, 4: 3, 5: 3}) \n",
13151 ".o. Counter({8: 4, 0: 3, 2: 3, 3: 3, 5: 3, 6: 2}) \n",
13155 "o.. Counter({8: 3, 2: 3, 5: 1, 7: 1}) \n",
13159 "xo. Counter({8: 3, 3: 3, 4: 3, 2: 2}) \n",
13163 "x.o Counter({3: 6, 7: 4, 5: 2}) \n",
13167 "x.x Counter({2: 3, 3: 3, 4: 3, 7: 3}) \n",
13171 ".x. Counter({2: 8, 8: 0, 3: 0, 5: 0, 6: 0}) \n",
13175 ".x. Counter({6: 6, 3: 5, 8: 3, 5: 3, 2: 2}) \n",
13179 ".xo Counter({4: 4, 2: 3, 6: 1}) \n",
13183 ".xo Counter({5: 6, 6: 5}) \n",
13187 "... Counter({3: 5, 6: 4, 8: 3, 5: 3, 7: 3}) \n",
13191 ".oo Counter({5: 10, 6: 3}) \n",
13195 ".o. Counter({8: 3, 2: 3, 6: 3, 3: 2}) \n",
13199 ".ox Counter({3: 5, 2: 4, 6: 2}) \n",
13203 "xoo Counter({2: 4, 5: 4, 3: 3}) \n",
13207 "... Counter({8: 4, 2: 3, 3: 3, 6: 3, 7: 3}) \n",
13211 "... Counter({1: 3, 3: 3, 6: 3, 2: 2, 7: 2, 8: 1}) \n",
13215 "o.x Counter({1: 3, 4: 3, 7: 3, 3: 2, 5: 2}) \n",
13219 ".x. Counter({2: 5, 3: 4, 8: 3, 6: 3}) \n",
13223 ".o. Counter({8: 3, 3: 3, 6: 3}) \n",
13227 "oo. Counter({8: 3, 2: 3, 5: 3}) \n",
13231 "oo. Counter({8: 4, 2: 3, 3: 3, 5: 3, 4: 2}) \n",
13235 "..o Counter({2: 10, 6: 4, 7: 2, 3: 0, 4: 0, 5: 0}) \n",
13239 ".x. Counter({8: 7, 6: 6, 4: 5, 5: 2, 1: 1, 3: 1}) \n",
13243 ".x. Counter({3: 8, 8: 5, 6: 4, 2: 3}) \n",
13247 ".oo Counter({2: 4, 4: 3, 6: 3}) \n",
13251 "... Counter({8: 21203, 0: 14869, 6: 7569, 2: 5002, 4: 73, 3: 9, 1: 3, 5: 2, 7: 0}) \n",
13255 ".oo Counter({6: 9, 2: 3}) \n",
13259 "..o Counter({6: 3, 7: 3, 2: 2, 4: 2}) \n",
13263 ".o. Counter({5: 9, 8: 5, 6: 3}) \n",
13267 "o.. Counter({3: 4, 8: 2, 2: 2, 7: 1}) \n",
13271 "... Counter({6: 4, 3: 3, 4: 3, 7: 3, 8: 2}) \n",
13275 "x.x Counter({7: 4, 5: 3}) \n",
13279 "x.x Counter({5: 11, 7: 3}) \n",
13283 "..o Counter({2: 10, 7: 5, 1: 3, 6: 1, 3: 0}) \n",
13287 ".o. Counter({3: 7, 8: 0, 2: 0, 6: 0}) \n",
13291 "..x Counter({5: 4, 1: 3, 2: 3, 3: 3, 6: 3, 7: 3}) \n",
13295 ".ox Counter({2: 3, 4: 3, 5: 3, 6: 3}) \n",
13299 "oo. Counter({8: 9, 3: 2, 5: 2, 1: 1}) \n",
13303 ".oo Counter({3: 7, 6: 4, 2: 3}) \n",
13307 ".o. Counter({3: 4, 6: 3, 8: 3, 2: 2, 4: 2, 5: 2}) \n",
13311 "o.. Counter({8: 3, 4: 3, 3: 2, 5: 2, 7: 2}) \n",
13315 "xox Counter({4: 3}) \n",
13319 ".o. Counter({6: 13, 3: 11, 5: 6, 8: 4, 2: 1}) \n",
13323 ".x. Counter({8: 3, 2: 3, 6: 3}) \n",
13327 "... Counter({3: 6, 5: 6, 7: 5, 2: 3, 4: 3, 6: 2, 8: 2}) \n",
13331 "x.. Counter({3: 5, 5: 3, 7: 3, 8: 2}) \n",
13335 ".xo Counter({2: 3, 3: 3, 6: 3}) \n",
13339 "ox. Counter({8: 4, 4: 4, 3: 3, 2: 2}) \n",
13343 ".x. Counter({8: 3, 2: 3, 4: 3, 6: 3}) \n",
13347 "..o Counter({6: 4, 2: 3, 7: 3}) \n",
13351 "o.x Counter({4: 3, 5: 3, 7: 3, 2: 2}) \n",
13355 "... Counter({6: 4, 7: 4, 3: 2, 1: 1, 8: 0}) \n",
13359 ".o. Counter({8: 3, 4: 3, 6: 3}) \n",
13363 "ox. Counter({8: 3, 4: 3, 5: 3}) \n",
13367 ".o. Counter({8: 4, 1: 3, 2: 3, 3: 3, 6: 3}) \n",
13371 ".o. Counter({8: 3, 2: 3, 4: 3, 5: 3, 6: 3}) \n",
13375 ".xo Counter({1: 3, 3: 3, 4: 3, 5: 3, 6: 3}) \n",
13379 "oo. Counter({8: 5, 2: 3, 3: 3}) \n",
13383 "oxo Counter({2: 1, 4: 1}) \n",
13387 ".oo Counter({3: 7, 6: 4, 1: 3}) \n",
13391 ".oo Counter({2: 3, 5: 3, 6: 3, 3: 1, 4: 1}) \n",
13395 "oxo Counter({4: 4, 2: 3, 5: 3}) \n",
13399 ".o. Counter({8: 4, 2: 4, 6: 3}) \n",
13403 "oxo Counter({4: 3}) \n",
13407 "o.. Counter({7: 4, 8: 3, 5: 3}) \n",
13411 "... Counter({8: 6, 4: 4, 6: 4, 7: 3}) \n",
13415 "... Counter({3: 6, 8: 3, 5: 3, 6: 3, 7: 3}) \n",
13419 "xox Counter({3: 4, 2: 1}) \n",
13423 "..o Counter({6: 7, 3: 4, 2: 3, 5: 3, 7: 3}) \n",
13427 ".xo Counter({5: 3, 6: 3, 2: 2, 4: 2}) \n",
13431 "o.. Counter({8: 5, 7: 2}) \n",
13435 "... Counter({4: 4, 8: 3, 6: 3, 7: 3}) \n",
13439 "o.o Counter({7: 4, 2: 3, 4: 3}) \n",
13443 "o.. Counter({8: 3, 3: 3, 4: 3, 7: 3, 2: 2}) \n",
13447 "x.. Counter({5: 2, 8: 1, 7: 1}) \n",
13451 "x.. Counter({8: 4, 3: 3, 4: 3, 7: 3}) \n",
13455 "oox Counter({5: 4, 2: 3, 3: 3}) \n",
13459 ".xo Counter({2: 4, 4: 3, 3: 2, 6: 2}) \n",
13463 "ox. Counter({3: 7, 8: 4, 5: 4}) \n",
13467 ".x. Counter({3: 5, 1: 4, 4: 4, 2: 3, 6: 3, 8: 2}) \n",
13471 "xox Counter({3: 3, 5: 0}) \n",
13475 "x.o Counter({2: 3, 7: 2}) \n",
13479 "... Counter({2: 4, 8: 3, 7: 3, 6: 2}) \n",
13483 ".xo Counter({5: 9, 2: 4, 6: 2, 3: 1}) \n",
13487 "x.o Counter({4: 1, 3: 0, 5: 0, 7: 0}) \n",
13491 "... Counter({6: 3, 7: 2, 8: 0}) \n",
13495 "..x Counter({7: 4, 3: 3, 2: 2, 6: 2, 5: 1}) \n",
13499 "x.. Counter({3: 3, 8: 2, 2: 2, 7: 1}) \n",
13503 "o.o Counter({5: 5, 7: 4}) \n",
13507 "..o Counter({4: 3, 6: 3, 7: 3}) \n",
13511 ".x. Counter({8: 3, 3: 3, 4: 3, 6: 2}) \n",
13515 ".x. Counter({8: 2, 6: 2, 3: 1}) \n",
13519 "ox. Counter({4: 4, 8: 3, 2: 3, 3: 3, 5: 3}) \n",
13523 "... Counter({3: 5, 4: 5, 6: 4, 8: 1, 2: 0, 7: 0}) \n",
13527 "... Counter({6: 4, 8: 3, 7: 3}) \n",
13531 "ox. Counter({8: 3, 5: 0}) \n",
13535 "o.x Counter({2: 5, 5: 4, 3: 1, 7: 1}) \n",
13539 "..o Counter({2: 6, 7: 5, 6: 0}) \n",
13543 "o.o Counter({2: 3, 5: 3, 7: 3, 3: 2, 4: 1}) \n",
13547 "o.x Counter({4: 8, 7: 2}) \n",
13551 "... Counter({5: 2, 6: 2, 8: 2, 2: 1, 3: 1, 7: 0}) \n",
13555 "oxo Counter({3: 12}) \n",
13559 ".x. Counter({8: 8, 6: 4}) \n",
13563 "..o Counter({3: 4, 2: 3, 4: 3, 6: 3, 7: 3}) \n",
13567 ".ox Counter({2: 3, 6: 3}) \n",
13571 ".o. Counter({8: 5, 5: 3, 6: 3}) \n",
13575 ".x. Counter({8: 3, 2: 3, 6: 1}) \n",
13579 "xx. Counter({8: 4, 4: 4}) \n",
13583 ".oo Counter({1: 3, 2: 3, 6: 3, 3: 2}) \n",
13587 ".o. Counter({6: 5, 8: 2, 5: 2}) \n",
13591 "... Counter({8: 7, 1: 0, 3: 0, 5: 0, 6: 0, 7: 0}) \n",
13595 "..x Counter({4: 3, 5: 3, 6: 3, 7: 2}) \n",
13599 ".ox Counter({6: 9}) \n",
13603 "..x Counter({6: 6, 3: 5, 7: 4, 5: 2}) \n",
13607 "ox. Counter({8: 3, 3: 3, 4: 3, 2: 2}) \n",
13611 "xo. Counter({8: 3, 5: 0}) \n",
13615 "x.o Counter({4: 4, 3: 3, 7: 3}) \n",
13619 "... Counter({8: 7, 2: 4, 6: 3, 7: 3}) \n",
13623 "x.o Counter({3: 5, 2: 4, 7: 3}) \n",
13627 "x.x Counter({4: 4, 7: 2}) \n",
13631 ".o. Counter({8: 12, 3: 2, 6: 1, 5: 0}) \n",
13635 "x.o Counter({3: 8, 5: 3, 7: 1}) \n",
13639 ".o. Counter({8: 3, 2: 3, 4: 3, 6: 2}) \n",
13643 "ox. Counter({8: 2, 2: 0, 3: 0, 5: 0}) \n",
13647 "o.x Counter({2: 5, 4: 4, 3: 3, 5: 3, 7: 3}) \n",
13651 "xo. Counter({2: 5, 3: 5, 8: 3}) \n",
13655 "o.. Counter({2: 3, 4: 3, 7: 3, 8: 2}) \n",
13659 "x.. Counter({8: 6, 7: 2}) \n",
13663 "oo. Counter({4: 5, 8: 4}) \n",
13667 ".ox Counter({4: 3, 5: 3, 6: 3}) \n",
13671 "ox. Counter({8: 3, 4: 3}) \n",
13675 ".ox Counter({5: 4, 2: 3, 6: 2}) \n",
13679 "xox Counter({4: 3, 5: 1}) \n",
13683 ".x. Counter({4: 10, 2: 3, 3: 3, 6: 3, 8: 1, 5: 0}) \n",
13687 "..o Counter({2: 3, 3: 3, 6: 3, 7: 2}) \n",
13691 "..o Counter({7: 6, 6: 4, 2: 2}) \n",
13695 "o.. Counter({3: 5, 8: 4, 7: 3}) \n",
13699 ".ox Counter({2: 3, 4: 3, 6: 3}) \n",
13703 "..x Counter({4: 4, 5: 3, 7: 3, 3: 2, 6: 2, 2: 1}) \n",
13707 "... Counter({6: 5, 7: 4, 2: 3, 4: 3, 8: 2}) \n",
13711 "..x Counter({6: 7, 7: 2}) \n",
13715 "..x Counter({4: 4, 3: 3, 6: 3, 7: 2}) \n",
13719 "..o Counter({6: 4, 2: 3, 4: 3, 7: 3}) \n",
13723 "... Counter({8: 6, 2: 4, 6: 4, 7: 4, 0: 3, 5: 3}) \n",
13727 "oo. Counter({3: 10, 8: 2, 2: 2}) \n",
13731 ".ox Counter({6: 10, 5: 0}) \n",
13735 "o.. Counter({7: 1, 8: 0}) \n",
13739 "..o Counter({4: 4, 1: 3, 3: 3, 6: 3, 7: 2}) \n",
13743 ".xo Counter({2: 3, 6: 3}) \n",
13747 ".x. Counter({4: 4, 8: 2, 5: 2, 6: 2}) \n",
13751 "... Counter({8: 5, 6: 3, 7: 3, 3: 2}) \n",
13755 ".x. Counter({4: 4, 8: 3, 6: 3}) \n",
13759 ".xo Counter({5: 4, 3: 0, 6: 0}) \n",
13763 ".xo Counter({2: 5, 3: 3, 5: 2, 6: 2}) \n",
13767 "ox. Counter({8: 5, 5: 5, 3: 3}) \n",
13771 "o.. Counter({8: 3, 1: 3, 4: 3, 3: 2, 7: 2}) \n",
13775 "xo. Counter({2: 5, 5: 5, 8: 2}) \n",
13779 "xo. Counter({8: 6, 3: 3}) \n",
13783 ".oo Counter({2: 6, 6: 3, 5: 2}) \n",
13787 "..o Counter({5: 5, 6: 3, 7: 3}) \n",
13791 "... Counter({2: 4, 4: 4, 8: 3, 6: 3, 7: 3}) \n",
13795 "o.. Counter({2: 3, 3: 3, 8: 2, 7: 1}) \n",
13799 "oo. Counter({8: 7, 3: 2}) \n",
13803 "... Counter({4: 5, 7: 4, 8: 3, 2: 3, 6: 2}) \n",
13807 "o.x Counter({5: 4, 2: 3, 7: 2}) \n",
13811 "xoo Counter({3: 4, 4: 3, 5: 3}) \n",
13815 "..o Counter({5: 4, 2: 3, 4: 3, 6: 3, 7: 3}) \n",
13819 "oo. Counter({8: 3, 3: 3, 4: 3}) \n",
13823 "o.. Counter({2: 3, 3: 3, 7: 2, 8: 1}) \n",
13827 ".oo Counter({2: 3, 3: 3, 6: 3}) \n",
13831 "ox. Counter({4: 3, 8: 0}) \n",
13835 "oo. Counter({8: 6, 5: 2, 3: 1}) \n",
13839 ".x. Counter({8: 3, 6: 3, 5: 2, 2: 1, 3: 1}) \n",
13843 "ox. Counter({2: 5, 8: 3, 5: 2}) \n",
13847 "x.o Counter({2: 3, 4: 3, 5: 3, 7: 2}) \n",
13851 "... Counter({8: 4, 3: 3, 4: 3, 6: 3, 7: 3}) \n",
13855 "... Counter({4: 7, 3: 6, 8: 5, 5: 2, 6: 2, 7: 2}) \n",
13859 "oox Counter({2: 10}) \n",
13863 ".xo Counter({4: 3, 5: 3, 6: 3}) \n",
13867 "xoo Counter({3: 8}) \n",
13871 "xox Counter({5: 3}) \n",
13875 ".o. Counter({1: 3, 4: 3, 5: 3, 8: 3, 3: 2, 6: 2}) \n",
13879 "... Counter({2: 3, 1: 2, 6: 2, 7: 1, 3: 0, 8: 0}) \n",
13883 ".o. Counter({8: 3, 4: 3, 6: 3, 2: 2}) \n",
13887 "o.o Counter({3: 6, 7: 4, 2: 3}) \n",
13891 "o.o Counter({3: 7, 7: 3, 1: 0}) \n",
13895 ".x. Counter({6: 4, 4: 3, 8: 2, 2: 2}) \n",
13899 ".x. Counter({4: 3, 8: 2, 5: 2, 6: 2}) \n",
13903 "..o Counter({4: 4, 2: 3, 3: 3, 6: 3, 7: 3}) \n",
13907 ".xx Counter({5: 8, 6: 5}) \n",
13911 "..o Counter({5: 5, 6: 4, 1: 3, 2: 3, 3: 3, 7: 3}) \n",
13915 ".o. Counter({8: 3, 2: 3, 6: 3, 3: 2}) \n",
13919 "x.x Counter({2: 3, 3: 3, 5: 3, 7: 3}) \n",
13923 ".o. Counter({2: 4, 6: 4, 8: 3}) \n",
13927 ".o. Counter({8: 3, 2: 3, 6: 3, 4: 2}) \n",
13931 "oo. Counter({8: 3, 1: 3, 3: 3, 4: 3, 5: 3}) \n",
13935 "oxx Counter({4: 4}) \n",
13939 "..o Counter({6: 5, 7: 3, 5: 2}) \n",
13943 ".o. Counter({6: 8, 8: 0}) \n",
13947 "... Counter({6: 4, 7: 4, 8: 3, 4: 3, 2: 2}) \n",
13951 "xx. Counter({8: 5, 3: 4}) \n",
13955 ".oo Counter({6: 7}) \n",
13959 "xo. Counter({2: 3, 4: 3, 8: 2}) \n",
13963 "ox. Counter({3: 4, 2: 3, 8: 2}) \n",
13967 ".o. Counter({3: 3, 4: 3, 8: 2, 6: 2}) \n",
13971 "... Counter({7: 3, 8: 0, 3: 0, 5: 0, 6: 0}) \n",
13975 "..x Counter({6: 8, 7: 3}) \n",
13979 "x.. Counter({8: 3, 3: 3, 5: 3, 7: 2}) \n",
13983 "xox Counter({5: 4, 2: 3}) \n",
13987 "o.. Counter({8: 3, 4: 3, 7: 3}) \n",
13991 "x.x Counter({3: 2, 5: 1, 4: 0, 7: 0}) \n",
13995 ".x. Counter({8: 3, 4: 3, 2: 2, 6: 2}) \n",
13999 "oxo Counter({1: 3, 4: 3, 3: 2}) \n",
14003 "..o Counter({2: 6, 4: 4, 7: 3, 6: 2}) \n",
14007 "oxx Counter({4: 9, 5: 1}) \n",
14011 ".oo Counter({4: 3, 6: 3, 3: 1}) \n",
14015 "xxo Counter() \n",
14019 "oo. Counter({8: 5, 2: 3, 3: 3}) \n",
14023 "o.. Counter({7: 5, 2: 4, 8: 3}) \n",
14027 "... Counter({3: 13, 1: 0, 2: 0, 6: 0, 7: 0, 8: 0}) \n",
14031 "... Counter({7: 4, 8: 3, 4: 3, 5: 3, 6: 3}) \n",
14035 "xo. Counter({3: 4, 4: 4, 8: 3, 5: 3}) \n",
14039 "..o Counter({2: 3, 4: 3, 5: 3, 6: 3, 7: 3}) \n",
14043 "ox. Counter({8: 3, 4: 3, 3: 2}) \n",
14047 ".x. Counter({0: 4, 8: 3, 5: 3, 2: 2, 6: 2}) \n",
14051 "o.x Counter({2: 1, 3: 0, 4: 0, 7: 0}) \n",
14055 "x.. Counter({3: 6, 7: 4, 8: 3}) \n",
14059 "..o Counter({2: 4, 3: 3, 4: 3, 7: 3, 6: 2}) \n",
14063 "o.. Counter({3: 7, 7: 7, 8: 5, 5: 2, 2: 0}) \n",
14067 "x.. Counter({5: 4, 8: 3, 3: 3, 4: 3, 7: 3}) \n",
14071 "xoo Counter({2: 3, 3: 2, 4: 1, 5: 1}) \n",
14075 "xxo Counter({5: 5, 3: 3}) \n",
14079 "xoo Counter({3: 3, 4: 2}) \n",
14083 "o.o Counter({7: 7, 5: 2, 3: 0}) \n",
14087 ".x. Counter({2: 8, 3: 3, 8: 2, 6: 2}) \n",
14091 "xo. Counter({2: 3, 8: 2}) \n",
14095 "xxo Counter({5: 5, 4: 3}) \n",
14099 "o.. Counter({3: 6, 7: 5, 8: 3}) \n",
14103 ".o. Counter({8: 3, 4: 3, 6: 3}) \n",
14107 "... Counter({2: 11, 0: 5, 6: 4, 3: 1, 8: 1, 5: 0, 7: 0}) \n",
14111 "x.. Counter({8: 3, 2: 3, 3: 3, 7: 3}) \n",
14115 ".oo Counter({6: 3}) \n",
14119 "o.. Counter({2: 4, 8: 3, 3: 3, 4: 3, 7: 3}) \n",
14123 "x.. Counter({7: 4, 4: 3, 5: 3, 8: 3, 2: 2, 3: 2}) \n",
14127 ".o. Counter({6: 4, 8: 3, 2: 3}) \n",
14131 "oxo Counter({4: 8, 3: 1}) \n",
14135 "oox Counter({4: 5}) \n",
14139 "ox. Counter({8: 3, 4: 3, 5: 3, 3: 2}) \n",
14143 ".o. Counter({8: 5, 2: 4, 6: 3}) \n",
14147 "oox Counter({2: 3, 3: 3, 4: 3}) \n",
14151 "xo. Counter({8: 6}) \n",
14155 "..x Counter({5: 3, 7: 2, 6: 1}) \n",
14159 "xoo Counter({3: 1, 2: 0}) \n",
14163 ".x. Counter({8: 5, 3: 0, 5: 0, 6: 0}) \n",
14167 "..x Counter({3: 5, 2: 4, 6: 3, 7: 3}) \n",
14171 ".x. Counter({6: 5, 8: 4, 5: 3}) \n",
14175 "xo. Counter({8: 3, 3: 3, 5: 3, 4: 2}) \n",
14179 "o.. Counter({8: 4, 3: 4, 5: 4, 1: 3, 7: 3}) \n",
14183 ".o. Counter({4: 4, 8: 3, 2: 3, 3: 3, 6: 3}) \n",
14187 "... Counter({6: 6, 2: 4, 3: 4, 8: 3, 7: 2}) \n",
14191 "o.. Counter({8: 1, 1: 0, 3: 0, 4: 0, 5: 0, 7: 0}) \n",
14195 "... Counter({4: 6, 2: 5, 0: 4, 8: 4, 5: 3, 6: 3, 7: 2}) \n",
14199 "ox. Counter({2: 8, 3: 4, 8: 3, 5: 3}) \n",
14203 "..o Counter({3: 8, 5: 5, 2: 3, 7: 3, 6: 2}) \n",
14207 ".x. Counter({6: 4, 8: 3, 2: 3, 1: 2, 3: 2}) \n",
14211 ".x. Counter({8: 5, 3: 3, 6: 3, 2: 2, 4: 2}) \n",
14215 "oxo Counter({3: 3, 2: 0}) \n",
14219 "... Counter({2: 4, 8: 3, 5: 3, 6: 3, 7: 3}) \n",
14223 "oxo Counter({1: 2, 3: 1}) \n",
14227 "x.. Counter({2: 4, 8: 3, 5: 3, 7: 2}) \n",
14231 "x.o Counter({3: 3, 4: 3, 7: 3, 2: 2}) \n",
14235 "xo. Counter({3: 3, 8: 0}) \n",
14239 "x.o Counter({4: 3, 5: 3, 7: 2}) \n",
14243 "x.. Counter({8: 3, 7: 3}) \n",
14247 "..o Counter({5: 11, 1: 0, 3: 0, 6: 0, 7: 0}) \n",
14251 "xoo Counter({2: 7, 3: 2}) \n",
14255 "..x Counter({7: 4, 3: 3, 4: 3, 5: 3, 6: 3}) \n",
14259 ".oo Counter({6: 11, 3: 3}) \n",
14263 "oxo Counter({3: 3, 4: 3, 5: 3}) \n",
14267 "..o Counter({3: 3, 4: 3, 6: 3, 1: 2, 2: 2, 7: 2}) \n",
14271 ".xo Counter({6: 3}) \n",
14275 "xoo Counter({3: 14}) \n",
14279 "..x Counter({2: 5, 5: 5, 7: 3, 6: 2}) \n",
14283 ".o. Counter({1: 11, 3: 4, 5: 2, 8: 1, 6: 0}) \n",
14287 "xo. Counter({8: 5, 3: 3, 5: 3}) \n",
14291 "x.x Counter({3: 5, 7: 1}) \n",
14295 "x.o Counter({2: 3, 4: 3, 7: 3}) \n",
14299 "ox. Counter({8: 3, 3: 3, 2: 2}) \n",
14303 "x.o Counter({3: 4, 5: 1, 7: 1, 2: 0}) \n",
14307 ".o. Counter({8: 3, 4: 3, 6: 3}) \n",
14311 "... Counter({4: 4, 5: 3, 6: 3, 7: 3, 8: 3, 3: 2}) \n",
14315 "o.. Counter({8: 5, 4: 3, 5: 3, 7: 3}) \n",
14319 "ox. Counter({8: 3, 2: 3, 3: 3, 4: 3}) \n",
14323 "o.. Counter({2: 8, 7: 4, 8: 2}) \n",
14327 "o.o Counter({7: 6, 2: 4, 5: 3}) \n",
14331 "... Counter({3: 4, 1: 3, 5: 3, 6: 3, 8: 3, 7: 2}) \n",
14335 "... Counter({6: 2, 7: 2, 8: 1, 5: 1}) \n",
14339 "... Counter({8: 3, 2: 2, 6: 2, 7: 2}) \n",
14343 ".x. Counter({5: 3, 6: 2, 8: 1}) \n",
14347 "oxo Counter({2: 3, 3: 3, 4: 3}) \n",
14351 "..x Counter({6: 3, 7: 3, 3: 2}) \n",
14355 ".oo Counter({5: 4, 4: 3, 6: 3}) \n",
14359 "o.. Counter({8: 4, 2: 3, 3: 3, 4: 3, 7: 3}) \n",
14363 "... Counter({8: 5, 4: 4, 6: 4, 1: 3, 3: 3, 7: 3}) \n",
14367 "x.o Counter({2: 3, 3: 3, 4: 2, 7: 1}) \n",
14371 "x.o Counter({3: 6, 7: 4, 2: 2}) \n",
14375 ".x. Counter({8: 5, 6: 4, 2: 3, 3: 3, 4: 3}) \n",
14379 "xo. Counter({8: 3, 3: 3, 4: 3}) \n",
14385 "for b in p_floor0:\n",
14386 " if b != 'human?':\n",
14387 " print(show_board(b), p_floor0[b], '\\n')"
14391 "cell_type": "code",
14392 "execution_count": 236,
14397 "output_type": "stream",
14401 ".xo Counter({6: 5, 1: 1, 3: 1}) \n",
14405 ".x. Counter({3: 4, 6: 4, 4: 3, 5: 3, 8: 2}) \n",
14409 "oox Counter({2: 1, 4: 1}) \n",
14413 ".o. Counter({8: 782, 3: 743, 6: 690, 2: 282, 1: 15}) \n",
14417 "..o Counter({2: 1, 3: 1, 6: 1, 7: 1}) \n",
14421 "x.. Counter({4: 6878, 3: 5308, 8: 3024, 7: 549, 2: 380}) \n",
14425 "oxo Counter({2: 21, 3: 1}) \n",
14429 "xo. Counter({5: 4, 2: 3, 4: 3, 8: 2}) \n",
14433 "oxo Counter({4: 5, 2: 3, 5: 2, 3: 1}) \n",
14437 "... Counter({6: 35062, 4: 33987, 3: 5003, 8: 2378, 7: 2101, 2: 80, 5: 10}) \n",
14441 "... Counter({8: 1, 5: 1, 6: 1, 7: 1}) \n",
14445 ".xo Counter({3: 3, 6: 1}) \n",
14449 "oox Counter({2: 5, 4: 3, 3: 1, 5: 1}) \n",
14453 "... Counter({6: 20, 8: 10, 3: 5, 7: 2}) \n",
14457 ".x. Counter({8: 155, 3: 1, 6: 1}) \n",
14461 "xoo Counter({2: 3, 4: 2}) \n",
14465 ".x. Counter({2: 4, 8: 3, 3: 3, 6: 3}) \n",
14469 "oo. Counter({2: 18, 8: 1, 3: 1}) \n",
14473 "... Counter({0: 5, 2: 4, 8: 3, 6: 2, 7: 1}) \n",
14477 "... Counter({2: 4, 8: 4, 4: 3, 5: 3, 6: 3, 7: 3}) \n",
14481 ".xo Counter({2: 3, 6: 1}) \n",
14485 ".x. Counter({1: 201, 3: 2, 8: 1, 5: 1, 6: 1}) \n",
14489 "..o Counter({5: 25, 7: 13, 3: 2, 6: 1}) \n",
14493 "o.o Counter({7: 10, 4: 6}) \n",
14497 ".x. Counter({3: 6, 8: 3, 1: 3, 4: 3, 6: 3}) \n",
14501 "o.x Counter({4: 514, 5: 1, 7: 1}) \n",
14505 ".oo Counter({2: 684, 3: 1, 6: 1}) \n",
14509 "... Counter({8: 1, 2: 1, 3: 1, 6: 1, 7: 1}) \n",
14513 ".o. Counter({3: 5707, 2: 5644, 6: 5475, 5: 4195, 8: 1403}) \n",
14517 ".o. Counter({4: 5, 6: 5, 8: 3, 1: 2, 3: 2}) \n",
14521 "ox. Counter({8: 6658}) \n",
14525 ".xo Counter({5: 4, 4: 3, 6: 3}) \n",
14529 "... Counter({2: 13, 4: 12, 8: 6, 6: 4, 7: 4, 1: 2, 3: 1}) \n",
14533 "..o Counter({3: 1, 4: 1, 5: 1, 6: 1, 7: 1}) \n",
14537 "oo. Counter({8: 171, 2: 91, 4: 1}) \n",
14541 "... Counter({2: 16, 3: 5, 8: 1, 6: 1, 7: 1}) \n",
14545 "..o Counter({7: 4884, 3: 3320, 6: 1451, 2: 1256, 5: 541}) \n",
14549 "... Counter({4: 4, 8: 3, 7: 3, 6: 2}) \n",
14553 "... Counter({8: 3, 6: 2, 7: 2}) \n",
14557 ".x. Counter({8: 2, 2: 1, 3: 1, 6: 1}) \n",
14561 "xoo Counter({5: 26, 3: 3}) \n",
14565 "... Counter({2: 39728, 4: 26663, 6: 10545, 8: 2834, 3: 218, 7: 4, 1: 2}) \n",
14569 "... Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
14573 "..o Counter({6: 4, 3: 1, 7: 1}) \n",
14577 "..o Counter({2: 1, 5: 1, 6: 1, 7: 1}) \n",
14581 "..o Counter({2: 85, 6: 63, 7: 3}) \n",
14585 "oo. Counter({8: 26, 2: 1}) \n",
14589 ".xo Counter({6: 149, 3: 145, 2: 8, 5: 8, 4: 6}) \n",
14593 "xoo Counter({2: 1928}) \n",
14597 ".xo Counter({2: 5, 3: 2, 6: 1}) \n",
14601 "... Counter({8: 1, 2: 1, 6: 1, 7: 1}) \n",
14605 "ox. Counter({2: 3, 5: 3, 4: 2, 8: 1}) \n",
14609 "oo. Counter({8: 3677, 3: 1, 5: 1}) \n",
14613 "xo. Counter({8: 3, 4: 3}) \n",
14617 "... Counter({8: 1, 3: 1, 6: 1, 7: 1}) \n",
14621 ".x. Counter({2: 9, 5: 9, 8: 3, 6: 2}) \n",
14625 ".ox Counter({4: 885, 2: 1, 3: 1, 5: 1, 6: 1}) \n",
14629 "o.x Counter({5: 6160, 7: 4587, 4: 1208}) \n",
14633 "..o Counter({6: 4, 2: 2, 3: 1, 7: 1}) \n",
14637 "xoo Counter({3: 218, 2: 121, 4: 2}) \n",
14641 ".ox Counter({2: 5, 3: 4, 5: 1, 6: 1}) \n",
14645 "... Counter({4: 831, 5: 5, 7: 3, 8: 1, 6: 1}) \n",
14649 ".oo Counter({6: 6, 4: 1}) \n",
14653 ".x. Counter({8: 3, 6: 1}) \n",
14657 "x.o Counter({3: 3, 7: 1}) \n",
14661 "ox. Counter({4: 8, 8: 4, 3: 3, 5: 3}) \n",
14665 "..o Counter({6: 7, 1: 5, 2: 4, 3: 3, 7: 1}) \n",
14669 "..o Counter({6: 7449, 5: 25, 7: 14}) \n",
14673 "..o Counter({2: 1, 5: 1, 6: 1, 7: 1}) \n",
14677 "..o Counter({7: 3981, 5: 23, 6: 1}) \n",
14681 "oxo Counter({2: 112, 3: 1, 5: 1}) \n",
14685 ".ox Counter({6: 3}) \n",
14689 ".o. Counter({2: 1152, 0: 994, 6: 66, 8: 4, 5: 2}) \n",
14693 "... Counter({0: 1, 1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
14697 "o.o Counter({7: 24, 3: 1}) \n",
14701 "... Counter({8: 5111, 6: 14, 7: 6}) \n",
14705 ".o. Counter({6: 10, 4: 8, 8: 8, 3: 4, 5: 2, 0: 1, 2: 1}) \n",
14709 "xoo Counter({2: 362, 4: 16, 5: 16}) \n",
14713 "xoo Counter({4: 3}) \n",
14717 "xo. Counter({3: 6560, 4: 5868, 8: 1, 2: 1, 5: 1}) \n",
14721 "... Counter({0: 1, 2: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
14725 ".x. Counter({8: 4, 4: 4, 6: 4, 5: 2, 2: 1}) \n",
14729 "... Counter({7: 2649, 8: 1030, 6: 1}) \n",
14733 ".o. Counter({8: 682, 3: 1, 6: 1}) \n",
14737 "o.. Counter({7: 6, 8: 5, 3: 4, 4: 4}) \n",
14741 ".xx Counter({3: 13, 6: 5}) \n",
14745 "... Counter({8: 1, 2: 1, 6: 1, 7: 1}) \n",
14749 "oo. Counter({8: 12}) \n",
14753 "..o Counter({6: 9, 2: 6, 7: 1}) \n",
14757 ".ox Counter({4: 1511, 5: 1137, 6: 1}) \n",
14761 "... Counter({8: 10740, 5: 4145, 6: 1144, 3: 991, 7: 163}) \n",
14765 "... Counter({2: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
14769 ".o. Counter({6: 7, 4: 6, 1: 3, 2: 3, 8: 3, 3: 2}) \n",
14773 ".oo Counter({3: 1, 5: 1, 6: 1}) \n",
14777 ".o. Counter({4: 6, 8: 4, 3: 4, 6: 4, 2: 2}) \n",
14781 ".xo Counter({2: 3, 4: 3, 6: 3}) \n",
14785 "xox Counter() \n",
14789 "x.. Counter({3: 25, 8: 1, 5: 1, 7: 1}) \n",
14793 "xo. Counter({8: 1, 2: 1, 3: 1, 5: 1}) \n",
14797 "xoo Counter({5: 3}) \n",
14801 "..x Counter({4: 480, 7: 347, 6: 99, 3: 17, 2: 1}) \n",
14805 "xox Counter({3: 1, 4: 1}) \n",
14809 "..x Counter({6: 2, 1: 1, 3: 1, 4: 1, 5: 1, 7: 1}) \n",
14813 "..x Counter({6: 5637, 1: 1, 3: 1, 5: 1, 7: 1}) \n",
14817 "o.. Counter({1: 17772, 8: 3779, 7: 715, 5: 546, 3: 1}) \n",
14821 "o.o Counter({7: 37, 2: 1, 3: 1, 5: 1}) \n",
14825 "o.o Counter({7: 3, 3: 1, 5: 1}) \n",
14829 ".xo Counter({4: 3, 3: 2, 1: 1, 6: 1}) \n",
14833 ".o. Counter({8: 7584, 6: 4297, 3: 2587, 5: 2022, 1: 1}) \n",
14837 "ox. Counter({8: 2016}) \n",
14841 "xo. Counter({3: 566, 5: 24, 8: 12}) \n",
14845 "..o Counter({7: 3, 6: 1}) \n",
14849 "xoo Counter({3: 208, 5: 13, 4: 1}) \n",
14853 "ox. Counter({8: 1, 1: 1, 3: 1, 5: 1}) \n",
14857 ".o. Counter({8: 3, 2: 3, 6: 1}) \n",
14861 ".o. Counter({1: 14, 8: 1, 2: 1, 3: 1, 6: 1}) \n",
14865 "oo. Counter({8: 2269}) \n",
14869 ".x. Counter({4: 4, 6: 4, 2: 2, 3: 2, 5: 2, 8: 2}) \n",
14873 ".xo Counter({3: 1, 5: 1, 6: 1}) \n",
14877 ".xo Counter({6: 6, 5: 5, 4: 3, 3: 2}) \n",
14881 ".o. Counter({8: 3, 6: 1}) \n",
14885 ".o. Counter({8: 1, 3: 1, 5: 1, 6: 1}) \n",
14889 "x.o Counter({3: 103, 2: 53, 7: 1}) \n",
14893 "xx. Counter({5: 28, 8: 3}) \n",
14897 "xo. Counter({8: 3}) \n",
14901 "... Counter({3: 43485, 1: 19956, 6: 17169, 8: 835, 7: 661, 5: 585, 2: 287}) \n",
14905 ".oo Counter({6: 15, 1: 4, 3: 2, 2: 1, 4: 1}) \n",
14909 "... Counter({2: 60, 3: 5, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
14913 "x.o Counter({3: 11464, 2: 5727, 4: 4588, 5: 475, 7: 191}) \n",
14917 ".x. Counter({6: 8, 8: 3}) \n",
14921 ".x. Counter({5: 876, 8: 1, 6: 1}) \n",
14925 "..o Counter({3: 5701, 6: 16, 7: 16}) \n",
14929 ".xo Counter({2: 4, 1: 3, 6: 3, 3: 2}) \n",
14933 ".x. Counter({2: 3, 6: 3, 8: 3, 4: 2, 5: 2, 0: 1}) \n",
14937 ".x. Counter({4: 8, 6: 4, 8: 3}) \n",
14941 ".o. Counter({8: 4, 6: 4, 4: 2, 5: 1}) \n",
14945 "oxo Counter({2: 92}) \n",
14949 "x.o Counter({2: 1, 3: 1, 5: 1, 7: 1}) \n",
14953 "..o Counter({6: 26002, 2: 13368, 4: 460, 7: 6, 1: 1, 3: 1, 5: 1}) \n",
14957 "x.. Counter({5: 3, 8: 1, 7: 1}) \n",
14961 "o.. Counter({8: 1, 4: 1, 7: 1}) \n",
14965 ".oo Counter({2: 57, 6: 14, 4: 1}) \n",
14969 "x.x Counter({3: 629, 7: 131, 2: 1}) \n",
14973 "o.. Counter({8: 1, 3: 1, 5: 1, 7: 1}) \n",
14977 ".x. Counter({8: 3, 4: 3, 6: 3, 5: 2}) \n",
14981 "oox Counter({4: 798, 3: 1, 5: 1}) \n",
14985 "o.. Counter({8: 535, 7: 533, 5: 147}) \n",
14989 "o.. Counter({8: 13197, 3: 2604, 5: 1164, 7: 150, 2: 1}) \n",
14993 "x.x Counter({3: 3036, 7: 2438, 4: 1397}) \n",
14997 "x.o Counter({7: 2, 1: 1, 3: 1, 5: 1}) \n",
15001 "xo. Counter({3: 4776, 2: 1933, 8: 771}) \n",
15005 "x.o Counter({7: 3}) \n",
15009 "x.. Counter({5: 5, 4: 4, 8: 3, 7: 3}) \n",
15013 "o.x Counter({4: 471, 3: 1, 7: 1}) \n",
15017 ".o. Counter({2: 1600, 8: 816, 6: 624}) \n",
15021 ".o. Counter({8: 1, 2: 1, 5: 1, 6: 1}) \n",
15025 "o.. Counter({4: 5, 8: 3, 7: 3}) \n",
15029 "..x Counter({4: 9, 2: 3, 7: 3, 6: 2}) \n",
15033 ".ox Counter({4: 1, 6: 1}) \n",
15037 "oxo Counter({3: 4, 4: 4, 2: 3}) \n",
15041 ".xx Counter({4: 7, 6: 1}) \n",
15045 "x.. Counter({3: 23572, 7: 2006, 8: 2, 2: 1, 5: 1}) \n",
15049 "... Counter({8: 1, 5: 1, 6: 1, 7: 1}) \n",
15053 "x.x Counter({4: 15, 7: 1}) \n",
15057 "oxo Counter({1: 3, 5: 3, 3: 2, 4: 2}) \n",
15061 "x.o Counter({2: 3, 7: 1}) \n",
15065 "x.. Counter({7: 823, 3: 258, 8: 1}) \n",
15069 ".xo Counter({4: 3, 6: 1}) \n",
15073 "o.o Counter({3: 1, 4: 1, 7: 1}) \n",
15077 ".xo Counter({2: 3, 3: 3, 4: 3, 6: 3, 5: 2}) \n",
15081 "x.o Counter({4: 3, 7: 3}) \n",
15085 ".xo Counter({6: 3}) \n",
15089 ".o. Counter({8: 1, 2: 1, 3: 1, 6: 1}) \n",
15093 "xox Counter({4: 2983}) \n",
15097 ".o. Counter({8: 19, 2: 18, 6: 17, 5: 7, 3: 4}) \n",
15101 ".xo Counter({2: 36, 5: 7, 6: 1}) \n",
15105 "xo. Counter({8: 1, 2: 1}) \n",
15109 "... Counter({6: 8237, 7: 5058, 8: 1, 2: 1, 5: 1}) \n",
15113 "o.x Counter({4: 10, 7: 1}) \n",
15117 "o.o Counter({7: 33, 2: 1}) \n",
15121 "... Counter({2: 824, 5: 2, 8: 1, 6: 1, 7: 1}) \n",
15125 ".x. Counter({6: 20, 8: 2, 3: 2, 5: 2, 1: 1}) \n",
15129 "o.x Counter({2: 420, 3: 1, 7: 1}) \n",
15133 "... Counter({8: 3, 2: 3, 5: 3, 6: 2, 7: 2}) \n",
15137 "... Counter({2: 3, 6: 3, 0: 2, 7: 2, 8: 2, 4: 1}) \n",
15141 "o.x Counter({4: 10, 7: 4, 5: 3, 3: 2}) \n",
15145 "... Counter({4: 68, 7: 2, 0: 1, 2: 1, 3: 1, 5: 1, 6: 1, 8: 1}) \n",
15149 "o.o Counter({7: 97, 3: 51, 2: 1}) \n",
15153 "o.. Counter({8: 1, 1: 1, 3: 1, 7: 1}) \n",
15157 "... Counter({6: 12, 8: 2, 7: 1}) \n",
15161 ".o. Counter({4: 1736, 8: 1, 3: 1, 5: 1, 6: 1}) \n",
15165 ".xo Counter({2: 29, 3: 1, 6: 1}) \n",
15169 ".ox Counter({2: 1, 6: 1}) \n",
15173 "xox Counter({4: 9, 2: 2}) \n",
15177 ".o. Counter({8: 4, 0: 3, 2: 3, 6: 3}) \n",
15181 "... Counter({6: 19773, 2: 14042, 8: 1025, 7: 2, 1: 1, 3: 1, 5: 1}) \n",
15185 ".x. Counter({8: 11, 6: 10, 1: 2, 3: 2}) \n",
15189 "oxo Counter({4: 109}) \n",
15193 "..o Counter({7: 4, 3: 3, 6: 3, 4: 2}) \n",
15197 ".o. Counter({3: 2419, 6: 2065, 8: 1230}) \n",
15201 "o.. Counter({8: 10031, 7: 8, 5: 4, 3: 1, 4: 1}) \n",
15205 "xoo Counter({2: 3761}) \n",
15209 "... Counter({7: 10, 8: 1, 2: 1, 3: 1, 6: 1}) \n",
15213 ".x. Counter({8: 2, 5: 1, 6: 1}) \n",
15217 "x.o Counter({5: 8, 3: 4, 4: 1, 7: 1}) \n",
15221 "oo. Counter({8: 29, 2: 1, 3: 1, 5: 1}) \n",
15225 ".oo Counter({6: 4, 4: 3, 2: 2}) \n",
15229 ".x. Counter({6: 3, 8: 1, 2: 1}) \n",
15233 "x.. Counter({4: 3, 8: 2, 3: 1, 7: 1}) \n",
15237 ".oo Counter({6: 5, 2: 3, 3: 3, 4: 2}) \n",
15241 ".x. Counter({3: 11, 5: 7, 8: 4, 6: 4}) \n",
15245 ".x. Counter({6: 21, 3: 3, 8: 2}) \n",
15249 ".o. Counter({8: 5, 6: 5, 0: 3, 2: 3}) \n",
15253 "o.o Counter({2: 630, 7: 165, 3: 1}) \n",
15257 "oox Counter({4: 506}) \n",
15261 "..o Counter({2: 2935, 7: 1121, 6: 1}) \n",
15265 ".o. Counter({8: 38, 6: 1}) \n",
15269 ".ox Counter({6: 4, 3: 2, 4: 2, 5: 1}) \n",
15273 "ox. Counter({4: 11, 8: 1, 3: 1}) \n",
15277 "... Counter({8: 31446, 6: 20173, 4: 15727, 3: 12148, 5: 22, 1: 1, 7: 1}) \n",
15281 "... Counter({8: 16607, 1: 1, 3: 1, 6: 1, 7: 1}) \n",
15285 ".x. Counter({8: 1, 6: 1}) \n",
15289 ".o. Counter({0: 4, 6: 4, 8: 3, 2: 3, 4: 3}) \n",
15293 ".oo Counter({2: 12, 6: 7}) \n",
15297 "x.. Counter({3: 18, 8: 1, 7: 1}) \n",
15301 "o.o Counter({7: 12, 4: 4, 2: 3, 3: 2}) \n",
15305 ".x. Counter({8: 7, 6: 4}) \n",
15309 "x.o Counter({3: 3, 7: 1}) \n",
15313 ".x. Counter({8: 17, 1: 3, 3: 1, 6: 1}) \n",
15317 "... Counter({7: 2146, 8: 25, 6: 1}) \n",
15321 "oo. Counter({3: 1503, 8: 1075, 1: 1}) \n",
15325 "x.. Counter({7: 16, 3: 7, 8: 1, 2: 1}) \n",
15329 "ox. Counter({2: 16, 8: 1, 3: 1}) \n",
15333 "x.o Counter({2: 135, 5: 6, 7: 1}) \n",
15337 "ox. Counter({4: 240, 2: 74, 8: 1}) \n",
15341 ".o. Counter({5: 5571, 6: 5109, 8: 2230}) \n",
15345 "xo. Counter({8: 1, 2: 1, 3: 1, 5: 1}) \n",
15349 "... Counter({2: 4, 3: 4, 4: 1, 6: 1, 7: 1, 8: 1}) \n",
15353 "... Counter({4: 2, 1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
15357 ".o. Counter({6: 10, 2: 2, 8: 1}) \n",
15361 "oxo Counter({5: 510, 3: 490, 2: 3}) \n",
15365 "..o Counter({1: 1, 3: 1, 6: 1, 7: 1}) \n",
15369 "x.. Counter({4: 4, 8: 3, 5: 3, 7: 2}) \n",
15373 "o.o Counter({4: 3, 5: 2, 7: 1}) \n",
15377 ".ox Counter({6: 128, 4: 106, 3: 62}) \n",
15381 "x.. Counter({4: 993, 8: 1, 7: 1}) \n",
15385 "xo. Counter({3: 552, 4: 495, 8: 1}) \n",
15389 "x.. Counter({8: 1, 4: 1, 7: 1}) \n",
15393 "..x Counter({4: 10, 6: 3, 7: 3}) \n",
15397 "..o Counter({6: 3, 2: 2, 5: 2, 7: 2}) \n",
15401 "o.o Counter({7: 2508}) \n",
15405 "oo. Counter({2: 6, 8: 3, 3: 2, 4: 2}) \n",
15409 "..x Counter({4: 335, 5: 198, 7: 162, 6: 105, 2: 101}) \n",
15413 ".x. Counter({3: 4, 4: 4, 2: 3, 6: 3, 8: 2}) \n",
15417 "... Counter({8: 914, 2: 800, 6: 275, 7: 199, 0: 186}) \n",
15421 ".xo Counter({2: 3, 3: 3, 4: 3, 6: 3}) \n",
15425 "..x Counter({5: 1, 6: 1, 7: 1}) \n",
15429 "xxo Counter({5: 3}) \n",
15433 ".x. Counter({3: 13, 5: 6, 2: 4, 6: 4, 0: 3, 8: 3}) \n",
15437 "xoo Counter() \n",
15441 ".xo Counter({6: 9, 3: 3}) \n",
15445 "xox Counter({3: 3572}) \n",
15449 "ox. Counter({8: 1, 3: 1}) \n",
15453 "o.o Counter({2: 12, 7: 2, 3: 1}) \n",
15457 "x.o Counter({5: 45, 7: 3}) \n",
15461 "... Counter({8: 1, 2: 1, 6: 1, 7: 1}) \n",
15465 "o.. Counter({4: 3, 2: 2, 5: 2, 3: 1, 7: 1, 8: 1}) \n",
15469 "oxo Counter({1: 249, 3: 22, 5: 6}) \n",
15473 "o.o Counter({1: 9546, 7: 178, 4: 2, 5: 2, 3: 1}) \n",
15477 "..x Counter({4: 5, 5: 3, 6: 2, 7: 2}) \n",
15481 "... Counter({4: 7965, 8: 3298, 5: 857, 7: 41, 6: 4}) \n",
15485 ".xo Counter({3: 11, 4: 3, 6: 3}) \n",
15489 "x.. Counter({4: 7, 2: 5, 8: 3, 7: 3}) \n",
15493 "o.. Counter({8: 27, 3: 1, 5: 1, 7: 1}) \n",
15497 ".ox Counter({2: 2, 3: 2, 4: 1, 6: 1}) \n",
15501 "o.. Counter({7: 1322, 5: 1177, 8: 1174}) \n",
15505 "o.. Counter({7: 892, 5: 800, 4: 672, 2: 300, 8: 292}) \n",
15509 ".x. Counter({8: 160, 3: 146, 6: 57, 4: 16, 5: 10}) \n",
15513 "... Counter({6: 31672, 2: 24748, 5: 11312, 0: 9496, 8: 6709, 3: 2217, 7: 1}) \n",
15517 ".ox Counter({4: 3, 6: 1}) \n",
15521 ".o. Counter({8: 1, 1: 1, 3: 1, 6: 1}) \n",
15525 ".xo Counter({6: 3, 5: 1}) \n",
15529 "ox. Counter({4: 182, 8: 118, 2: 12, 3: 6, 5: 1}) \n",
15533 "ox. Counter({8: 831, 4: 7, 5: 6}) \n",
15537 ".x. Counter({8: 4, 4: 3, 6: 3}) \n",
15541 "ox. Counter({8: 3032, 2: 43, 3: 11}) \n",
15545 "o.. Counter({2: 13, 7: 3, 8: 1, 3: 1}) \n",
15549 ".o. Counter({6: 17, 8: 16, 4: 12, 3: 9, 2: 8}) \n",
15553 "ox. Counter({2: 8, 8: 1}) \n",
15557 ".xo Counter({5: 22, 1: 2, 3: 1, 6: 1}) \n",
15561 "x.o Counter({4: 4717, 7: 30, 5: 29}) \n",
15565 "..o Counter({2: 1, 3: 1, 6: 1, 7: 1}) \n",
15569 "xo. Counter({4: 5, 8: 2, 2: 2, 3: 2}) \n",
15573 ".x. Counter({4: 7, 8: 3, 6: 1}) \n",
15577 "xo. Counter({4: 82, 8: 22, 5: 3}) \n",
15581 "x.o Counter({3: 152, 5: 8, 7: 1}) \n",
15585 "..o Counter({4: 5, 5: 5, 6: 5, 7: 3}) \n",
15589 ".o. Counter({6: 47, 8: 1, 3: 1, 4: 1, 5: 1}) \n",
15593 "..o Counter({6: 18, 7: 1}) \n",
15597 "... Counter({6: 33, 8: 1, 2: 1, 7: 1}) \n",
15601 "oox Counter({5: 794, 2: 356, 4: 270}) \n",
15605 "o.x Counter({2: 539, 4: 389, 7: 1}) \n",
15609 ".oo Counter({6: 18, 2: 13, 3: 3, 5: 1}) \n",
15613 "x.x Counter({3: 9400, 7: 1349, 5: 1}) \n",
15617 "oxo Counter({3: 3, 5: 3}) \n",
15621 ".x. Counter({8: 1, 3: 1, 5: 1, 6: 1}) \n",
15625 "xo. Counter({8: 1, 3: 1}) \n",
15629 "o.. Counter({2: 2025, 3: 2, 8: 1, 5: 1, 7: 1}) \n",
15633 "... Counter({4: 9, 2: 1, 3: 1, 6: 1, 7: 1, 8: 1}) \n",
15637 ".ox Counter({6: 152, 3: 1, 5: 1}) \n",
15641 "oxo Counter({5: 3}) \n",
15645 "xoo Counter({2: 3, 5: 1}) \n",
15649 ".x. Counter({4: 6, 6: 4, 8: 3, 3: 3}) \n",
15653 "... Counter({7: 5119, 2: 3898, 6: 3041, 8: 536, 3: 447}) \n",
15657 ".oo Counter({6: 8, 2: 2}) \n",
15661 "ox. Counter({4: 5, 1: 4, 8: 3, 3: 3}) \n",
15665 "o.x Counter({2: 6, 7: 1}) \n",
15669 ".x. Counter({0: 3, 8: 3, 2: 3, 4: 3, 6: 3}) \n",
15673 "oxo Counter({4: 99, 3: 1, 5: 1}) \n",
15677 "o.o Counter({7: 16, 1: 3, 3: 2, 5: 1}) \n",
15681 "... Counter({6: 23, 7: 2, 8: 1, 5: 1}) \n",
15685 ".xo Counter({6: 25, 4: 19, 5: 3}) \n",
15689 ".o. Counter({0: 1, 2: 1, 3: 1, 5: 1, 6: 1, 8: 1}) \n",
15693 "o.. Counter({8: 1, 2: 1, 5: 1, 7: 1}) \n",
15697 "xo. Counter({8: 4, 2: 2, 3: 1, 4: 1}) \n",
15701 "x.o Counter({3: 9713, 7: 19, 5: 1}) \n",
15705 "x.x Counter({4: 4, 3: 3, 7: 3, 2: 2}) \n",
15709 ".x. Counter({2: 178, 8: 1, 3: 1, 5: 1, 6: 1}) \n",
15713 ".x. Counter({6: 187, 8: 173, 2: 18, 5: 3, 3: 2}) \n",
15717 ".xo Counter({2: 26, 4: 21, 6: 1}) \n",
15721 ".xo Counter({5: 12, 6: 6}) \n",
15725 "... Counter({7: 5547, 6: 1449, 5: 1380, 3: 1176, 8: 926}) \n",
15729 ".oo Counter({5: 21, 6: 17}) \n",
15733 ".o. Counter({8: 1, 2: 1, 3: 1, 6: 1}) \n",
15737 ".ox Counter({2: 437, 3: 256, 6: 1}) \n",
15741 "xoo Counter({2: 613, 5: 180, 3: 73}) \n",
15745 "... Counter({6: 9004, 8: 7799, 2: 4862, 3: 812, 7: 112}) \n",
15749 "... Counter({1: 1, 2: 1, 3: 1, 6: 1, 7: 1, 8: 1}) \n",
15753 "o.x Counter({4: 5301, 1: 1, 3: 1, 5: 1, 7: 1}) \n",
15757 ".x. Counter({2: 9, 3: 9, 6: 2, 8: 1}) \n",
15761 ".o. Counter({6: 9, 8: 2, 3: 1}) \n",
15765 "oo. Counter({8: 795, 2: 465, 5: 1}) \n",
15769 "oo. Counter({8: 1136, 2: 854, 3: 1, 4: 1, 5: 1}) \n",
15773 "..o Counter({2: 13, 5: 5, 7: 2, 3: 1, 4: 1, 6: 1}) \n",
15777 ".x. Counter({8: 5, 3: 3, 1: 1, 4: 1, 5: 1, 6: 1}) \n",
15781 ".x. Counter({6: 10, 3: 5, 8: 3, 2: 2}) \n",
15785 ".oo Counter({6: 6, 2: 4, 4: 1}) \n",
15789 "... Counter({4: 169091, 2: 143376, 0: 96169, 8: 51596, 6: 21545, 3: 17, 7: 7, 5: 2, 1: 1}) \n",
15793 ".oo Counter({6: 42, 2: 3}) \n",
15797 "..o Counter({7: 4, 2: 3, 4: 3, 6: 2}) \n",
15801 ".o. Counter({5: 2170, 8: 10, 6: 8}) \n",
15805 "o.. Counter({3: 27, 7: 3, 8: 1, 2: 1}) \n",
15809 "... Counter({7: 2, 8: 1, 3: 1, 4: 1, 6: 1}) \n",
15813 "x.x Counter({5: 15, 7: 9}) \n",
15817 "x.x Counter({5: 27, 7: 3}) \n",
15821 "..o Counter({2: 11283, 1: 1, 3: 1, 6: 1, 7: 1}) \n",
15825 ".o. Counter({8: 1, 2: 1, 3: 1, 6: 1}) \n",
15829 "..x Counter({7: 16, 1: 6, 5: 3, 2: 1, 3: 1, 6: 1}) \n",
15833 ".ox Counter({5: 3, 4: 2, 2: 1, 6: 1}) \n",
15837 "oo. Counter({8: 26, 1: 2, 3: 1, 5: 1}) \n",
15841 ".oo Counter({6: 1058, 3: 743, 2: 1}) \n",
15845 ".o. Counter({6: 4, 8: 4, 2: 3, 3: 1, 4: 1, 5: 1}) \n",
15849 "o.. Counter({4: 2135, 8: 1, 3: 1, 5: 1, 7: 1}) \n",
15853 "xox Counter({4: 5}) \n",
15857 ".o. Counter({6: 5744, 3: 3058, 5: 5, 8: 4, 2: 1}) \n",
15861 ".x. Counter({8: 5, 2: 5, 6: 5}) \n",
15865 "... Counter({4: 17, 8: 9, 6: 5, 2: 3, 3: 3, 7: 3, 5: 2}) \n",
15869 "x.. Counter({3: 35, 7: 16, 5: 3, 8: 1}) \n",
15873 ".xo Counter({3: 6, 6: 5, 2: 3}) \n",
15877 "ox. Counter({2: 3, 8: 2, 3: 2, 4: 2}) \n",
15881 ".x. Counter({8: 3, 2: 3, 6: 3, 4: 2}) \n",
15885 "..o Counter({2: 56, 7: 7, 6: 5}) \n",
15889 "o.x Counter({2: 3, 4: 1, 5: 1, 7: 1}) \n",
15893 "... Counter({6: 27, 1: 2, 8: 1, 3: 1, 7: 1}) \n",
15897 ".o. Counter({4: 9, 8: 4, 6: 3}) \n",
15901 "ox. Counter({4: 238, 8: 1, 5: 1}) \n",
15905 ".o. Counter({8: 6289, 6: 2415, 1: 1008, 3: 567, 2: 473}) \n",
15909 ".o. Counter({8: 301, 4: 281, 2: 216, 6: 63, 5: 20}) \n",
15913 ".xo Counter({5: 2, 1: 1, 3: 1, 4: 1, 6: 1}) \n",
15917 "oo. Counter({3: 1374, 8: 458, 2: 1}) \n",
15921 "oxo Counter({4: 2, 2: 1}) \n",
15925 ".oo Counter({3: 3607, 6: 13, 1: 1}) \n",
15929 ".oo Counter({2: 33, 6: 12, 3: 1, 4: 1, 5: 1}) \n",
15933 "oxo Counter({4: 191, 2: 161, 5: 50}) \n",
15937 ".o. Counter({2: 16, 6: 4, 8: 3}) \n",
15941 "oxo Counter({4: 4}) \n",
15945 "o.. Counter({8: 8065, 5: 31, 7: 19}) \n",
15949 "... Counter({6: 5, 8: 4, 4: 2, 7: 1}) \n",
15953 "... Counter({6: 4, 8: 1, 3: 1, 5: 1, 7: 1}) \n",
15957 "xox Counter({3: 20, 2: 1}) \n",
15961 "..o Counter({2: 11, 6: 4, 7: 4, 5: 3, 3: 2}) \n",
15965 ".xo Counter({4: 2, 2: 1, 5: 1, 6: 1}) \n",
15969 "o.. Counter({8: 36, 7: 1}) \n",
15973 "... Counter({8: 3, 4: 3, 6: 3, 7: 3}) \n",
15977 "o.o Counter({2: 209, 7: 104, 4: 1}) \n",
15981 "o.. Counter({8: 6, 7: 5, 2: 4, 4: 4, 3: 2}) \n",
15985 "x.. Counter({8: 1, 5: 1, 7: 1}) \n",
15989 "x.. Counter({3: 9, 8: 5, 4: 1, 7: 1}) \n",
15993 "oox Counter({2: 1149, 3: 1, 5: 1}) \n",
15997 ".xo Counter({2: 4, 3: 3, 4: 3, 6: 3}) \n",
16001 "ox. Counter({3: 1421, 8: 960, 5: 941}) \n",
16005 ".x. Counter({4: 7, 6: 7, 2: 3, 3: 3, 1: 2, 8: 2}) \n",
16009 "xox Counter({3: 3, 5: 1}) \n",
16013 "x.o Counter({2: 32, 7: 1}) \n",
16017 "... Counter({2: 6, 7: 2, 8: 1, 6: 1}) \n",
16021 ".xo Counter({2: 1, 3: 1, 5: 1, 6: 1}) \n",
16025 "x.o Counter({3: 1, 4: 1, 5: 1, 7: 1}) \n",
16029 "... Counter({6: 3, 8: 1, 7: 1}) \n",
16033 "..x Counter({7: 1359, 2: 1, 3: 1, 5: 1, 6: 1}) \n",
16037 "x.. Counter({3: 7, 7: 5, 8: 4, 2: 1}) \n",
16041 "o.o Counter({7: 20, 5: 4}) \n",
16045 "..o Counter({7: 17, 4: 12, 6: 3}) \n",
16049 ".x. Counter({8: 3, 3: 3, 6: 3, 4: 1}) \n",
16053 ".x. Counter({8: 1, 3: 1, 6: 1}) \n",
16057 "ox. Counter({3: 4, 8: 3, 2: 3, 4: 3, 5: 3}) \n",
16061 "... Counter({6: 8, 3: 4, 4: 4, 7: 2, 8: 2, 2: 1}) \n",
16065 "... Counter({6: 3277, 8: 3078, 7: 992}) \n",
16069 "ox. Counter({8: 3, 5: 1}) \n",
16073 "o.x Counter({2: 14, 3: 3, 5: 2, 7: 1}) \n",
16077 "..o Counter({7: 1687, 2: 1093, 6: 1}) \n",
16081 "o.o Counter({2: 1659, 7: 387, 3: 1, 4: 1, 5: 1}) \n",
16085 "o.x Counter({4: 10, 7: 2}) \n",
16089 "... Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
16093 "oxo Counter({3: 5454}) \n",
16097 ".x. Counter({6: 8, 8: 3}) \n",
16101 "..o Counter({3: 12, 6: 5, 4: 4, 7: 3, 2: 1}) \n",
16105 ".ox Counter({2: 3, 6: 3}) \n",
16109 ".o. Counter({8: 2248, 6: 40, 5: 15}) \n",
16113 ".x. Counter({8: 1, 2: 1, 6: 1}) \n",
16117 "xx. Counter({8: 10, 4: 3}) \n",
16121 ".oo Counter({6: 22, 3: 3, 1: 1, 2: 1}) \n",
16125 ".o. Counter({6: 4, 5: 3, 8: 2}) \n",
16129 "... Counter({1: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
16133 "..x Counter({7: 5, 4: 4, 5: 4, 6: 1}) \n",
16137 ".ox Counter({6: 573}) \n",
16141 "..x Counter({3: 14, 6: 12, 5: 11, 7: 6}) \n",
16145 "ox. Counter({4: 4, 2: 3, 8: 2, 3: 2}) \n",
16149 "xo. Counter({8: 3, 5: 1}) \n",
16153 "x.o Counter({3: 1052, 4: 14, 7: 8}) \n",
16157 "... Counter({6: 10, 8: 7, 2: 6, 7: 4}) \n",
16161 "x.o Counter({3: 4267, 2: 3500, 7: 1}) \n",
16165 "x.x Counter({4: 10, 7: 1}) \n",
16169 ".o. Counter({8: 21, 5: 2, 3: 1, 6: 1}) \n",
16173 "x.o Counter({3: 6781, 5: 16, 7: 1}) \n",
16177 ".o. Counter({8: 4, 4: 4, 6: 3, 2: 2}) \n",
16181 "ox. Counter({8: 1, 2: 1, 3: 1, 5: 1}) \n",
16185 "o.x Counter({4: 5884, 2: 3915, 5: 1416, 7: 211, 3: 1}) \n",
16189 "xo. Counter({2: 583, 3: 226, 8: 1}) \n",
16193 "o.. Counter({2: 3, 8: 2, 4: 2, 7: 2}) \n",
16197 "x.. Counter({8: 29, 7: 1}) \n",
16201 "oo. Counter({4: 8, 8: 5}) \n",
16205 ".ox Counter({4: 268, 6: 10, 5: 7}) \n",
16209 "ox. Counter({4: 5, 8: 3}) \n",
16213 ".ox Counter({2: 643, 5: 23, 6: 1}) \n",
16217 "xox Counter({4: 3, 5: 1}) \n",
16221 ".x. Counter({4: 7, 2: 5, 5: 5, 3: 2, 8: 2, 6: 1}) \n",
16225 "..o Counter({2: 29, 3: 1, 6: 1, 7: 1}) \n",
16229 "..o Counter({7: 220, 6: 53, 2: 1}) \n",
16233 "o.. Counter({8: 1364, 7: 451, 3: 1}) \n",
16237 ".ox Counter({2: 268, 4: 108, 6: 1}) \n",
16241 "..x Counter({4: 11, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1}) \n",
16245 "... Counter({8: 319, 4: 46, 2: 31, 6: 8, 7: 8}) \n",
16249 "..x Counter({6: 13, 7: 1}) \n",
16253 "..x Counter({4: 7, 3: 3, 6: 3, 7: 2}) \n",
16257 "..o Counter({2: 4, 4: 3, 6: 3, 7: 3}) \n",
16261 "... Counter({0: 20, 6: 8, 2: 2, 7: 2, 8: 2, 5: 1}) \n",
16265 "oo. Counter({3: 17, 2: 2, 8: 1}) \n",
16269 ".ox Counter({6: 15, 5: 1}) \n",
16273 "o.. Counter({8: 1, 7: 1}) \n",
16277 "..o Counter({4: 10, 3: 6, 6: 4, 7: 4, 1: 1}) \n",
16281 ".xo Counter({2: 3, 6: 3}) \n",
16285 ".x. Counter({8: 4, 6: 4, 4: 3, 5: 3}) \n",
16289 "... Counter({8: 20, 7: 4, 6: 2, 3: 1}) \n",
16293 ".x. Counter({4: 33, 8: 1, 6: 1}) \n",
16297 ".xo Counter({5: 58, 3: 1, 6: 1}) \n",
16301 ".xo Counter({2: 5, 3: 3, 5: 3, 6: 2}) \n",
16305 "ox. Counter({5: 476, 8: 421, 3: 3}) \n",
16309 "o.. Counter({4: 12, 7: 3, 8: 2, 1: 1, 3: 1}) \n",
16313 "xo. Counter({2: 834, 5: 27, 8: 1}) \n",
16317 "xo. Counter({8: 31, 3: 1}) \n",
16321 ".oo Counter({2: 2648, 6: 39, 5: 1}) \n",
16325 "..o Counter({7: 1973, 5: 813, 6: 1}) \n",
16329 "... Counter({4: 529, 2: 371, 7: 2, 8: 1, 6: 1}) \n",
16333 "o.. Counter({8: 1, 2: 1, 3: 1, 7: 1}) \n",
16337 "oo. Counter({8: 27, 3: 1}) \n",
16341 "... Counter({8: 5, 4: 5, 7: 2, 2: 1, 6: 1}) \n",
16345 "o.x Counter({2: 448, 5: 1, 7: 1}) \n",
16349 "xoo Counter({4: 7758, 3: 3191, 5: 1}) \n",
16353 "..o Counter({2: 481, 4: 152, 7: 127, 5: 52, 6: 6}) \n",
16357 "oo. Counter({8: 1, 3: 1, 4: 1}) \n",
16361 "o.. Counter({8: 1, 2: 1, 3: 1, 7: 1}) \n",
16365 ".oo Counter({6: 10, 2: 6, 3: 1}) \n",
16369 "ox. Counter({4: 8, 8: 2}) \n",
16373 "oo. Counter({8: 1084, 3: 1, 5: 1}) \n",
16377 ".x. Counter({8: 1, 2: 1, 3: 1, 5: 1, 6: 1}) \n",
16381 "ox. Counter({2: 216, 8: 1, 5: 1}) \n",
16385 "x.o Counter({2: 4, 5: 3, 7: 3, 4: 2}) \n",
16389 "... Counter({3: 14, 6: 5, 4: 3, 8: 1, 7: 1}) \n",
16393 "... Counter({6: 7, 8: 5, 4: 3, 5: 3, 7: 3, 3: 2}) \n",
16397 "oox Counter({2: 488}) \n",
16401 ".xo Counter({4: 21, 5: 9, 6: 1}) \n",
16405 "xoo Counter({3: 5055}) \n",
16409 "xox Counter({5: 3}) \n",
16413 ".o. Counter({3: 5, 1: 4, 4: 3, 5: 3, 6: 3, 8: 3}) \n",
16417 "... Counter({2: 22, 7: 19, 1: 11, 6: 2, 8: 2, 3: 1}) \n",
16421 ".o. Counter({2: 2, 6: 2, 8: 1, 4: 1}) \n",
16425 "o.o Counter({3: 849, 7: 10, 2: 1}) \n",
16429 "o.o Counter({7: 2380, 3: 1231, 1: 1}) \n",
16433 ".x. Counter({6: 6, 8: 3, 2: 3, 4: 2}) \n",
16437 ".x. Counter({4: 5, 6: 5, 8: 1, 5: 1}) \n",
16441 "..o Counter({2: 3, 3: 3, 4: 3, 6: 3, 7: 3}) \n",
16445 ".xx Counter({6: 18, 5: 7}) \n",
16449 "..o Counter({1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1}) \n",
16453 ".o. Counter({2: 8, 8: 1, 3: 1, 6: 1}) \n",
16457 "x.x Counter({7: 16, 3: 3, 2: 2, 5: 1}) \n",
16461 ".o. Counter({2: 135, 6: 135, 8: 3}) \n",
16465 ".o. Counter({8: 3, 2: 3, 4: 3, 6: 3}) \n",
16469 "oo. Counter({8: 12967, 1: 628, 3: 1, 4: 1, 5: 1}) \n",
16473 "oxx Counter({4: 12}) \n",
16477 "..o Counter({6: 9, 5: 1, 7: 1}) \n",
16481 ".o. Counter({6: 15, 8: 1}) \n",
16485 "... Counter({8: 4, 2: 4, 6: 3, 7: 3, 4: 2}) \n",
16489 "xx. Counter({8: 10, 3: 4}) \n",
16493 ".oo Counter({6: 15}) \n",
16497 "xo. Counter({4: 470, 2: 61, 8: 1}) \n",
16501 "ox. Counter({2: 64, 3: 2, 8: 1}) \n",
16505 ".o. Counter({8: 3, 3: 3, 4: 3, 6: 3}) \n",
16509 "... Counter({7: 1645, 8: 1, 3: 1, 5: 1, 6: 1}) \n",
16513 "..x Counter({6: 14, 7: 3}) \n",
16517 "x.. Counter({8: 1, 3: 1, 5: 1, 7: 1}) \n",
16521 "xox Counter({5: 36, 2: 3}) \n",
16525 "o.. Counter({4: 271, 8: 1, 7: 1}) \n",
16529 "x.x Counter({3: 1, 4: 1, 5: 1, 7: 1}) \n",
16533 ".x. Counter({4: 8, 8: 1, 2: 1, 6: 1}) \n",
16537 "oxo Counter({4: 4, 3: 3, 1: 1}) \n",
16541 "..o Counter({2: 5, 6: 2, 4: 1, 7: 1}) \n",
16545 "oxx Counter({4: 9, 5: 1}) \n",
16549 ".oo Counter({6: 4, 3: 1, 4: 1}) \n",
16553 "xxo Counter() \n",
16557 "oo. Counter({2: 733, 8: 730, 3: 1}) \n",
16561 "o.. Counter({8: 1336, 7: 1154, 2: 789}) \n",
16565 "... Counter({1: 1, 2: 1, 3: 1, 6: 1, 7: 1, 8: 1}) \n",
16569 "... Counter({8: 3, 4: 3, 5: 3, 6: 3, 7: 3}) \n",
16573 "xo. Counter({4: 10, 3: 2, 8: 1, 5: 1}) \n",
16577 "..o Counter({4: 5, 5: 3, 7: 3, 2: 2, 6: 2}) \n",
16581 "ox. Counter({4: 66, 8: 1, 3: 1}) \n",
16585 ".x. Counter({8: 3, 0: 2, 2: 2, 5: 1, 6: 1}) \n",
16589 "o.x Counter({2: 3, 4: 3, 3: 1, 7: 1}) \n",
16593 "x.. Counter({3: 6391, 8: 1963, 7: 1}) \n",
16597 "..o Counter({2: 9, 3: 5, 6: 3, 7: 2, 4: 1}) \n",
16601 "o.. Counter({7: 9629, 3: 1815, 8: 1, 2: 1, 5: 1}) \n",
16605 "x.. Counter({3: 8521, 8: 7775, 5: 3258, 4: 2559, 7: 434}) \n",
16609 "xoo Counter({3: 2, 2: 1, 4: 1, 5: 1}) \n",
16613 "xxo Counter({5: 4, 3: 3}) \n",
16617 "xoo Counter({3: 3, 4: 1}) \n",
16621 "o.o Counter({7: 1059, 3: 1, 5: 1}) \n",
16625 ".x. Counter({3: 19, 2: 12, 8: 1, 6: 1}) \n",
16629 "xo. Counter({2: 3, 8: 1}) \n",
16633 "xxo Counter({5: 6, 4: 3}) \n",
16637 "o.. Counter({7: 2918, 8: 1029, 3: 913}) \n",
16641 ".o. Counter({6: 7, 8: 6, 4: 2}) \n",
16645 "... Counter({6: 7, 5: 2, 8: 2, 0: 1, 2: 1, 3: 1, 7: 1}) \n",
16649 "x.. Counter({8: 1, 2: 1, 3: 1, 7: 1}) \n",
16653 ".oo Counter({6: 3}) \n",
16657 "o.. Counter({2: 1259, 8: 331, 7: 229, 4: 226, 3: 1}) \n",
16661 "x.. Counter({4: 2, 2: 1, 3: 1, 5: 1, 7: 1, 8: 1}) \n",
16665 ".o. Counter({6: 679, 2: 637, 8: 288}) \n",
16669 "oxo Counter({4: 9, 3: 1}) \n",
16673 "oox Counter({4: 281}) \n",
16677 "ox. Counter({8: 3, 4: 2, 5: 2, 3: 1}) \n",
16681 ".o. Counter({6: 7, 8: 5, 2: 3}) \n",
16685 "oox Counter({3: 519, 2: 453, 4: 373}) \n",
16689 "xo. Counter({8: 3853}) \n",
16693 "..x Counter({5: 976, 6: 1, 7: 1}) \n",
16697 "xoo Counter({2: 1, 3: 1}) \n",
16701 ".x. Counter({8: 1, 3: 1, 5: 1, 6: 1}) \n",
16705 "..x Counter({3: 12, 2: 4, 6: 3, 7: 1}) \n",
16709 ".x. Counter({8: 684, 5: 19, 6: 9}) \n",
16713 "xo. Counter({3: 3, 4: 2, 8: 1, 5: 1}) \n",
16717 "o.. Counter({5: 1938, 7: 1811, 8: 1224, 3: 581, 1: 149}) \n",
16721 ".o. Counter({8: 3, 3: 3, 4: 3, 2: 2, 6: 2}) \n",
16725 "... Counter({2: 1454, 3: 1024, 6: 2, 8: 1, 7: 1}) \n",
16729 "o.. Counter({1: 1, 3: 1, 4: 1, 5: 1, 7: 1, 8: 1}) \n",
16733 "... Counter({4: 13, 6: 9, 5: 7, 2: 6, 7: 4, 0: 2, 8: 2}) \n",
16737 "ox. Counter({2: 20, 8: 2, 3: 1, 5: 1}) \n",
16741 "..o Counter({3: 7742, 6: 3122, 5: 703, 7: 13, 2: 1}) \n",
16745 ".x. Counter({8: 5, 6: 3, 2: 2, 1: 1, 3: 1}) \n",
16749 ".x. Counter({4: 5, 2: 3, 6: 3, 8: 1, 3: 1}) \n",
16753 "oxo Counter({3: 3, 2: 1}) \n",
16757 "... Counter({8: 5654, 2: 4331, 6: 765, 7: 258, 5: 236}) \n",
16761 "oxo Counter({1: 1, 3: 1}) \n",
16765 "x.. Counter({5: 48, 2: 10, 7: 2, 8: 1}) \n",
16769 "x.o Counter({2: 3, 3: 3, 4: 3, 7: 3}) \n",
16773 "xo. Counter({3: 3, 8: 1}) \n",
16777 "x.o Counter({5: 3, 4: 1, 7: 1}) \n",
16781 "x.. Counter({8: 3, 7: 3}) \n",
16785 "..o Counter({5: 4986, 3: 2, 1: 1, 6: 1, 7: 1}) \n",
16789 "xoo Counter({2: 24, 3: 1}) \n",
16793 "..x Counter({4: 4849, 6: 3456, 3: 1628, 7: 1459, 5: 1}) \n",
16797 ".oo Counter({6: 25, 3: 3}) \n",
16801 "oxo Counter({3: 3, 4: 3, 5: 3}) \n",
16805 "..o Counter({4: 5, 6: 5, 7: 5, 2: 4, 1: 3, 3: 3}) \n",
16809 ".xo Counter({6: 3}) \n",
16813 "xoo Counter({3: 599}) \n",
16817 "..x Counter({5: 14, 2: 10, 7: 3, 6: 2}) \n",
16821 ".o. Counter({1: 8237, 8: 1, 3: 1, 5: 1, 6: 1}) \n",
16825 "xo. Counter({5: 6175, 8: 4209, 3: 2172}) \n",
16829 "x.x Counter({3: 21, 7: 1}) \n",
16833 "x.o Counter({2: 16, 4: 1, 7: 1}) \n",
16837 "ox. Counter({8: 1, 2: 1, 3: 1}) \n",
16841 "x.o Counter({2: 1, 3: 1, 5: 1, 7: 1}) \n",
16845 ".o. Counter({4: 4, 8: 3, 6: 3}) \n",
16849 "... Counter({4: 4, 5: 4, 7: 2, 3: 1, 6: 1, 8: 1}) \n",
16853 "o.. Counter({8: 5, 5: 5, 4: 3, 7: 3}) \n",
16857 "ox. Counter({2: 4, 3: 3, 4: 3, 8: 2}) \n",
16861 "o.. Counter({2: 231, 8: 1, 7: 1}) \n",
16865 "o.o Counter({7: 1846, 2: 1163, 5: 1}) \n",
16869 "... Counter({1: 31, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1}) \n",
16873 "... Counter({8: 1, 5: 1, 6: 1, 7: 1}) \n",
16877 "... Counter({2: 3, 8: 1, 6: 1, 7: 1}) \n",
16881 ".x. Counter({8: 1, 5: 1, 6: 1}) \n",
16885 "oxo Counter({2: 100, 4: 66, 3: 1}) \n",
16889 "..x Counter({3: 1, 6: 1, 7: 1}) \n",
16893 ".oo Counter({6: 8, 4: 2, 5: 2}) \n",
16897 "o.. Counter({3: 4, 7: 4, 8: 3, 2: 3, 4: 3}) \n",
16901 "... Counter({4: 6, 1: 1, 3: 1, 6: 1, 7: 1, 8: 1}) \n",
16905 "x.o Counter({2: 9, 3: 4, 4: 3, 7: 2}) \n",
16909 "x.o Counter({3: 355, 7: 6, 2: 1}) \n",
16913 ".x. Counter({6: 242, 8: 118, 4: 38, 2: 12, 3: 3}) \n",
16917 "xo. Counter({8: 310, 3: 47, 4: 1}) \n",
16923 "for b in p_floor1m:\n",
16924 " if b != 'human?':\n",
16925 " print(show_board(b), p_floor1m[b], '\\n')"
16929 "cell_type": "code",
16930 "execution_count": 325,
16936 "('x', 'o', 'o', 'o', 'x', 'x', 'x', 'x', 'o')"
16939 "execution_count": 325,
16941 "output_type": "execute_result"
16945 "# p1 = new_menace()\n",
16946 "# p2 = new_menace()\n",
16947 "# g = new_game(p1, p2)\n",
16948 "g = new_game(p_floor1, p_floor0)\n",
16954 "cell_type": "code",
16955 "execution_count": 326,
16961 "[{'board': ('.', '.', '.', '.', '.', '.', '.', '.', '.'),\n",
16963 " 'player1?': True},\n",
16964 " {'board': ('.', '.', '.', '.', 'x', '.', '.', '.', '.'),\n",
16966 " 'player1?': False},\n",
16967 " {'board': ('.', '.', '.', '.', 'x', '.', '.', '.', 'o'),\n",
16969 " 'player1?': True},\n",
16970 " {'board': ('.', '.', '.', '.', 'x', '.', '.', 'x', 'o'),\n",
16972 " 'player1?': False},\n",
16973 " {'board': ('.', 'o', '.', '.', 'x', '.', '.', 'x', 'o'),\n",
16975 " 'player1?': True},\n",
16976 " {'board': ('.', 'o', '.', '.', 'x', 'x', '.', 'x', 'o'),\n",
16978 " 'player1?': False},\n",
16979 " {'board': ('.', 'o', '.', 'o', 'x', 'x', '.', 'x', 'o'),\n",
16981 " 'player1?': True},\n",
16982 " {'board': ('.', 'o', '.', 'o', 'x', 'x', 'x', 'x', 'o'),\n",
16984 " 'player1?': False},\n",
16985 " {'board': ('.', 'o', 'o', 'o', 'x', 'x', 'x', 'x', 'o'),\n",
16987 " 'player1?': True}]"
16990 "execution_count": 326,
16992 "output_type": "execute_result"
17000 "cell_type": "code",
17001 "execution_count": 310,
17007 "update_players(g)"
17011 "cell_type": "code",
17012 "execution_count": 311,
17017 "output_type": "stream",
17021 "... ... 7 Counter({0: 3, 1: 3, 2: 3, 3: 3, 4: 3, 5: 3, 6: 3, 8: 3, 7: 2}) \n",
17025 ".x. ... 5 Counter({3: 4, 0: 3, 2: 3, 4: 3, 5: 3, 6: 3, 7: 3, 8: 3}) \n",
17029 ".x. ... 3 Counter({0: 3, 2: 3, 4: 3, 6: 3, 7: 3, 8: 3, 5: 2}) \n",
17033 ".x. ... 2 Counter({8: 4, 0: 3, 2: 3, 4: 3, 6: 3, 7: 3}) \n",
17037 ".x. .x. 1 Counter({8: 3, 2: 3, 4: 3, 6: 3, 3: 2}) \n",
17041 ".x. .x. 6 Counter({8: 4, 2: 3, 4: 3, 6: 3}) \n",
17045 "ox. .oo 0 Counter({4: 3, 6: 3, 2: 2}) \n",
17049 "ox. oo. 8 Counter({8: 4, 4: 3}) \n",
17055 "for m in g['history']:\n",
17056 " b, r, f = canonical(m['board'])\n",
17057 " if m['player1?']:\n",
17058 " print(show_boards([m['board'], b]), m['move'], p1[b], '\\n')\n",
17060 " print(show_boards([m['board'], b]), m['move'], p2[b], '\\n')"
17064 "cell_type": "code",
17065 "execution_count": 323,
17070 "output_type": "stream",
17072 "... ... ... ...\n",
17073 "... ... ... ...\n",
17074 "... ... .x. .x. 7 7\n",
17077 ".+. .+. 0 False \n",
17080 "... .x. ... .x.\n",
17081 "... ... ..o o..\n",
17082 ".x. ... .x. ... 5 3\n",
17085 "... ... 2 False \n",
17088 "... .x. ... .x.\n",
17089 "..o o.. x.o o.x\n",
17090 ".x. ... .x. ... 3 5\n",
17093 "... ... 2 False \n",
17096 "... .x. ..o .x.\n",
17097 "x.o x.o x.o x.o\n",
17098 ".x. ... .x. ..o 2 8\n",
17101 "... ..+ 2 True \n",
17104 "..o oo. .xo oo.\n",
17105 "x.o ..x x.o x.x\n",
17106 ".x. .x. .x. .x. 1 3\n",
17109 "... ... 3 False \n",
17112 ".xo ox. .xo ox.\n",
17113 "x.o o.x x.o o.x\n",
17114 ".x. .x. ox. .xo 6 8\n",
17117 "+.. ..+ 0 True \n",
17120 ".xo ox. xxo oxx\n",
17121 "x.o x.x x.o x.x\n",
17122 "ox. .oo ox. .oo 0 2\n",
17125 "... ... 1 False \n",
17132 "for i in range(len(g['history']) - 1):\n",
17133 " m = g['history'][i]\n",
17134 " n = g['history'][i+1]\n",
17135 " board, r, f = canonical(m['board'])\n",
17136 " move_board = apply_move(empty_board(), m['move'], '+')\n",
17137 " cmove_board = transform(move_board, r, f)\n",
17138 " cmove = cmove_board.index('+')\n",
17140 " print(show_boards([m['board'], board, n['board'], transform(n['board'], r, f)]), m['move'], cmove)\n",
17141 " print(show_boards([move_board, cmove_board]), r, f, '\\n\\n')"
17145 "cell_type": "code",
17146 "execution_count": 327,
17151 "output_type": "stream",
17153 "0 Counter({4: 44929, 6: 301, 3: 71, 5: 55, 8: 34, 1: 25, 7: 16, 0: 6, 2: 5})\n",
17154 "1 Counter({0: 1, 1: 1, 2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1})\n",
17155 "2 Counter({3: 10669, 1: 6873, 2: 2541, 5: 847, 6: 582, 8: 413, 7: 123})\n",
17156 "3 Counter({2: 1, 3: 1, 5: 1, 6: 1, 7: 1, 8: 1})\n",
17157 "4 Counter({6: 1266, 3: 1114, 8: 17, 2: 1, 5: 1})\n",
17158 "5 Counter({8: 1, 2: 1, 6: 1, 7: 1})\n",
17159 "6 Counter({2: 68, 6: 17, 8: 3})\n",
17160 "7 Counter({8: 3, 6: 1})\n",
17161 "8 Counter({6: 3})\n"
17166 "for i, m in enumerate(g['history']):\n",
17167 " print(i, p_floor1[canonical(m['board'])[0]])"
17171 "cell_type": "code",
17172 "execution_count": 330,
17177 "output_type": "stream",
17186 "tb = g['history'][6]['board']\n",
17187 "print(show_boards([tb, canonical(tb)[0]]))"
17191 "cell_type": "code",
17192 "execution_count": 337,
17198 "Counter({0: 3, 2: 15, 6: 82})"
17201 "execution_count": 337,
17203 "output_type": "execute_result"
17207 "g = new_game(p_floor1, p_floor0)\n",
17208 "g['board'] = tb\n",
17209 "collections.Counter(menace_move(g) for _ in range(100))"
17213 "cell_type": "code",
17214 "execution_count": 338,
17220 "Counter({2: 79, 6: 18, 8: 3})"
17223 "execution_count": 338,
17225 "output_type": "execute_result"
17229 "g = new_game(p_floor1, p_floor0)\n",
17230 "g['board'] = canonical(tb)[0]\n",
17231 "collections.Counter(menace_move(g) for _ in range(100))"
17235 "cell_type": "code",
17236 "execution_count": null,
17246 "display_name": "Python 3",
17247 "language": "python",
17251 "codemirror_mode": {
17255 "file_extension": ".py",
17256 "mimetype": "text/x-python",
17258 "nbconvert_exporter": "python",
17259 "pygments_lexer": "ipython3",
17260 "version": "3.5.2+"
17264 "nbformat_minor": 2