From e9374b32741604b0b046088ac6c8d6c046d4a18b Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 2 Jul 2018 15:27:45 -0700 Subject: [PATCH] Add files via upload --- ipynb/Scrabble.ipynb | 26084 ++++++++++++++++++++++++++++------------- 1 file changed, 17748 insertions(+), 8336 deletions(-) diff --git a/ipynb/Scrabble.ipynb b/ipynb/Scrabble.ipynb index 7dbea70..89efeb7 100644 --- a/ipynb/Scrabble.ipynb +++ b/ipynb/Scrabble.ipynb @@ -15,7 +15,7 @@ "\n", "# Refactoring a Crossword Game Program\n", "\n", - "In my [CS 212 class](https://www.udacity.com/course/design-of-computer-programs--cs212) on Udacity, the [most complex lesson](https://www.udacity.com/course/viewer#!/c-cs212/l-48634860) involved a crossword game program (for games such as Scrabble® and Words with Friends®). The program was developed *incrementally*. First I asked \"what words can be made with a rack of seven letters, reagardless of the board?\", then I asked \"how can you place words onto a single row of the board?\", and finally, I, with the help of the students, developed a program to find the highest scoring play anywhere on the board. This approach made for a good sequence of exercises, each building on the previous one. But the code ended up being overly complicated—it accumlated [technical debt](https://en.wikipedia.org/wiki/Technical_debt)—because it kept around old ideas from each iteration.\n", + "In my [CS 212 class](https://www.udacity.com/course/design-of-computer-programs--cs212) on Udacity, the most complex lesson involved a [crossword game program](https://www.udacity.com/course/viewer#!/c-cs212/l-48634860) (for games such as Scrabble® and Words with Friends®). The program was developed *incrementally*. First I asked \"what words can be made with a rack of seven letters, reagardless of the board?\" Then I asked \"how can you place words onto a single row of the board?\" Finally, I, with the help of the students, developed a program to find the highest scoring play anywhere on the board. This approach made for a good sequence of exercises, each building on the previous one. But the code ended up being overly complicated—it accumlated [technical debt](https://en.wikipedia.org/wiki/Technical_debt)—because it kept around old ideas from each iteration.\n", "\n", "In this notebook I will refactor the program to pay off the technical debt.\n", "\n", @@ -31,9 +31,9 @@ "* **Board**: a grid of squares onto which players play tiles to make words. \n", "* **Square**: a location on the board; a square can hold one tile. (In the code, the variable name `s` always stands for a square number, and `sq` for the contents of a square, which can be a tile or empty.)\n", "* **Bonus**: some squares give you bonus scores: double or triple letter or word scores.\n", - "* **Play**: a play consists of placing some tiles on the board to form a continuous string of letters in one direction (across or down), such that only valid words are formed, and such that one of the letters is placed on an anchor square.\n", + "* **Play**: a play consists of placing some tiles on the board to form a continuous string of letters in one direction (across or down), such that only valid dictionary words are formed, and such that one of the letters is placed on an anchor square.\n", "* **Anchor square**: Every play must place a letter on an anchor square: either the center start square or a square that is adjacent to a tile previously played on the board. \n", - "* **Direction:** Every play must be in either the across or down direction. (The variable `dir` always stands for a direction, and is `1` for across and `17` for down.)\n", + "* **Direction:** Every play must be in either the across or down direction. (The variable `dir` always stands for a direction.)\n", "* **Cross word**: a word formed in the *other* direction from a play. For example, a play forms a word in the across direction, and in doing so, places a letter that extends a word in the down direction. Any new extended *cross word* must be in the dictionary.\n", "* **Score**: the points awarded for a play, consisting of the sum of the word scores for each word created (the main word and possibly any cross words), plus a *bingo* bonus if all seven letters are used. \n", "* **Word score**: Each word scores the sum of the letter scores for each tile (either placed by the player or already on the board but part of the word) times the word bonus score. The word bonus score starts at 1, and is multiplied by 2 for each double word square and 3 for each triple word square covered by a tile on this play.\n", @@ -43,6 +43,7 @@ "rack is replenished with tiles until the player has 7 tiles or until the bag of tiles is empty.\n", "* **Prefix**: a string of zero or more letters that starts some word in the dictionary. Not a concept that has to do\n", "with the *rules* of the game; it will be important in our *algorithm* that finds valid plays.\n", + "* **HTML display**: a (hopefully) pretty display of the board.\n", "\n", "This notebook uses these imports:" ] @@ -61,8 +62,8 @@ }, "outputs": [], "source": [ - "from __future__ import division, print_function\n", - "from collections import defaultdict, namedtuple\n", + "from collections import defaultdict, namedtuple\n", + "from statistics import mean, median\n", "from IPython.display import HTML, display\n", "import random" ] @@ -81,7 +82,7 @@ "\n", "# Dictionary and Words\n", "\n", - "We will represent the dictionary as a set of words. A word is an uppercase string of letters, like `'WORD'`. There are several standard dictionaries used by different communities of players; we will use the ENABLE dictionary—we can cache a local copy with this shell command:" + "We will represent the dictionary as a `set` of words. A word is an uppercase string of letters, like `'WORD'`. There are several standard dictionaries used by different communities of players; we will use the ENABLE dictionary—we can cache a local copy with this shell command:" ] }, { @@ -131,20 +132,35 @@ "source": [ "def Word(w) -> str: return w.strip().upper()\n", "\n", - "def is_word(word) -> bool: \n", - " \"Is this a legal word in the dictionary?\"\n", - " return word.upper() in DICTIONARY" + "DICTIONARY = {Word(w) for w in open('enable1.txt')}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { - "collapsed": true + "button": false, + "collapsed": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "172820" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "DICTIONARY = {Word(w) for w in open('enable1.txt')}" + "len(DICTIONARY)" ] }, { @@ -163,7 +179,16 @@ { "data": { "text/plain": [ - "172820" + "['MUTUALITY',\n", + " 'HYPERIMMUNIZE',\n", + " 'MULISH',\n", + " 'AIRSICK',\n", + " 'PERSISTS',\n", + " 'UNRIDABLE',\n", + " 'DECANES',\n", + " 'UNSETTLEDNESS',\n", + " 'PIANISSIMI',\n", + " 'IRENICS']" ] }, "execution_count": 5, @@ -172,7 +197,7 @@ } ], "source": [ - "len(DICTIONARY)" + "random.sample(DICTIONARY, 10)" ] }, { @@ -187,43 +212,6 @@ "read_only": false } }, - "outputs": [ - { - "data": { - "text/plain": [ - "['RATANY',\n", - " 'CONFERRING',\n", - " 'PHOTOTOXICITIES',\n", - " 'BESTIRS',\n", - " 'STRENGTH',\n", - " 'JACKSMELTS',\n", - " 'INVERSION',\n", - " 'PILEUP',\n", - " 'EYEBARS',\n", - " 'KNUCKLEHEADED']" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "random.sample(DICTIONARY, 10)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, "outputs": [ { "data": { @@ -231,7 +219,7 @@ "True" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -257,12 +245,12 @@ "\n", "The blank tile causes some complications. We'll represent a blank in a player's rack as the underscore character, `'_'`. But once the blank is played on the board, it must be used as if it was a specific letter. However, it doesn't score the points of the letter. I chose to use the lowercase version of the letter to represent this. That way, we know what letter the blank is standing for, and we can distinguish between scoring and non-scoring tiles. For example, `'EELRTT_'` is a rack that contains a blank; and `'LETTERs'` is a word played on the board that uses the blank to stand for the letter `S`. \n", "\n", - "We'll define `letters` to give all the distinct letters that can be made by a rack, and `remove` to remove letters from a rack (after they have been played)." + "We'll define `letters(rack)` to give all the distinct letters that can be made by a rack, and `is_word` to test if a word is in the dictionary. The `dict` `POINTS` tells how many points each letter is worth." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "button": false, "collapsed": false, @@ -279,24 +267,43 @@ "\n", "def letters(rack) -> str:\n", " \"All the distinct letters in a rack (including lowercase if there is a blank).\"\n", - " if BLANK in rack:\n", - " return cat(set(rack.replace(BLANK, ''))) + 'abcdefghijklmnopqrstuvwxyz'\n", - " else:\n", - " return cat(set(rack))\n", + " return cat(set(rack.replace(BLANK, 'abcdefghijklmnopqrstuvwxyz')))\n", " \n", - "def letters(rack) -> str:\n", - " \"All the distinct letters in a rack (including lowercase if there is a blank).\"\n", - " if BLANK in rack:\n", - " return letters(rack.replace(BLANK, '')) + 'abcdefghijklmnopqrstuvwxyz'\n", - " else:\n", - " return cat(set(rack))\n", - " \n", - "def remove(tiles, rack) -> str:\n", - " \"Return a copy of rack with the given tile(s) removed.\"\n", - " for tile in tiles:\n", - " if tile.islower(): tile = BLANK\n", - " rack = rack.replace(tile, '', 1)\n", - " return rack" + "def is_word(word) -> bool: \n", + " \"Is this a legal word in the dictionary?\"\n", + " return word.upper() in DICTIONARY\n", + "\n", + "POINTS = defaultdict(int, \n", + " A=1, B=3, C=3, D=2, E=1, F=4, G=2, H=4, I=1, J=8, K=5, L=1, M=3, \n", + " N=1, O=1, P=3, Q=10, R=1, S=1, T=1, U=1, V=4, W=4, X=8, Y=4, Z=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "button": false, + "collapsed": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "is_word('LETTERs')" ] }, { @@ -315,7 +322,7 @@ { "data": { "text/plain": [ - "True" + "'KCAR'" ] }, "execution_count": 9, @@ -324,7 +331,7 @@ } ], "source": [ - "is_word('LETTERs')" + "letters('RRAACCK')" ] }, { @@ -343,7 +350,7 @@ { "data": { "text/plain": [ - "'ERLST'" + "'rzvEbTathwfodRjLecgpixsymqlkun'" ] }, "execution_count": 10, @@ -351,92 +358,30 @@ "output_type": "execute_result" } ], - "source": [ - "letters('LETTERS')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'ERLTabcdefghijklmnopqrstuvwxyz'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ "letters('EELRTT_')" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } + "collapsed": false }, "outputs": [ { "data": { "text/plain": [ - "'LTER'" + "10" ] }, - "execution_count": 12, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "remove('SET', 'LETTERS')" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'LE'" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remove('TREaT', 'LETTER_') " + "POINTS['Q']" ] }, { @@ -455,7 +400,7 @@ "In the [previous version](https://www.udacity.com/course/viewer#!/c-cs212/l-48634860) of this program, the board was a two-dimensional matrix, and a square on the board was denoted by a `(row, col)` pair of indexes. There's nothing wrong with that representation, but for this version we will choose a different representation that is simpler in most ways:\n", "\n", "* The board is represented as a one-dimensional list of squares.\n", - "* The default board is 15×15 squares, but\n", + "* The standard board is 15×15 squares, but\n", "we will include a *border* around the outside, making the board size 17×17. \n", "* Squares are denoted by integer indexes, from 0 to 288.\n", "* To move in the `ACROSS` direction from one square to the next, increment the square index by 1.\n", @@ -463,13 +408,14 @@ "* The border squares are filled with a symbol, `OFF`, indicating that they are off the board.\n", "The advantage of the border is that the code never has to check if it is at the edge of the board; it can always\n", "look at the neighboring square without fear of indexing off the end of the board.\n", - "* Each square on the board is initially filled by a symbol indicating the bonus value of the square. When a tile is placed on a square,\n", + "* Each square on the board is initially filled by a symbol indicating the bonus value of the square: 1/2/3-dot characters for single/double/triple letter score; 2/3-dash characters for double and triple word score; and a star for the center starting position. When a tile is placed on a square,\n", "the tile replaces the bonus value.\n", "\n", - "How will we implement this? We'll define `Board` as a subclass of `list` and give it two additional attributes: \n", + "How will we implement this? We'll define `Board` as a subclass of `list` and give it three additional attributes: \n", "\n", "- `down`: the increment to move in the down direction; 17 for a standard board.\n", "- `directions`: the four increments to move to any neighboring square; `(1, 17, -1, -17)` in a standard board.\n", + "- `bingo`: the number of points you get for using all 7 letters.\n", "\n", "Jupyter/Ipython notebooks have a special convention for displaying objects in HTML. We will adopt it as a method of `Board`:\n", "\n", @@ -478,7 +424,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": { "button": false, "collapsed": false, @@ -491,9 +437,9 @@ "outputs": [], "source": [ "ACROSS = 1 # The 'across' direction; 'down' depends on the size of the board\n", - "OFF = '#' # A square that is off the board\n", - "EMPTY = '.:;-=*'\n", - "SL, DL, TL, DW, TW, STAR = EMPTY # Single/double/triple letter; double/triple word; star\n", + "OFF = '█' # A square that is off the board\n", + "(SL, DL, TL, DW, TW, STAR) = EMPTY = ( # Single/double/triple letter; double/triple word; star\n", + " '.', ':', '∴', '=', '≡', '*') \n", "\n", "Square = int # Squares are implemented as integer indexes.\n", "Direction = int # Directions are implemented as integer increments\n", @@ -523,110 +469,14 @@ } }, "source": [ - "We'll define the standard boards for Words with Friends® and Scrabble®:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "button": false, - "collapsed": true, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [], - "source": [ - "WWF = Board(\"\"\"\n", - "# # # # # # # # # # # # # # # # #\n", - "# . . . = . . ; . ; . . = . . . #\n", - "# . . : . . - . . . - . . : . . #\n", - "# . : . . : . . . . . : . . : . #\n", - "# = . . ; . . . - . . . ; . . = #\n", - "# . . : . . . : . : . . . : . . #\n", - "# . - . . . ; . . . ; . . . - . #\n", - "# ; . . . : . . . . . : . . . ; #\n", - "# . . . - . . . * . . . - . . . #\n", - "# ; . . . : . . . . . : . . . ; #\n", - "# . - . . . ; . . . ; . . . - . #\n", - "# . . : . . . : . : . . . : . . #\n", - "# = . . ; . . . - . . . ; . . = #\n", - "# . : . . : . . . . . : . . : . #\n", - "# . . : . . - . . . - . . : . . #\n", - "# . . . = . . ; . ; . . = . . . #\n", - "# # # # # # # # # # # # # # # # #\n", - "\"\"\".split(), bingo=35)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "SCRABBLE = Board(\"\"\"\n", - "# # # # # # # # # # # # # # # # #\n", - "# = . . : . . . = . . . : . . = #\n", - "# . - . . . ; . . . ; . . . - . #\n", - "# . . - . . . : . : . . . - . . #\n", - "# : . . - . . . : . . . - . . : #\n", - "# . . . . - . . . . . - . . . . #\n", - "# . ; . . . ; . . . ; . . . ; . #\n", - "# . . : . . . : . : . . . : . . #\n", - "# = . . : . . . * . . . : . . = #\n", - "# . . : . . . : . : . . . : . . #\n", - "# . ; . . . ; . . . ; . . . ; . #\n", - "# . . . . - . . . . . - . . . . #\n", - "# : . . - . . . : . . . - . . : #\n", - "# . . - . . . : . : . . . - . . #\n", - "# . - . . . ; . . . ; . . . - . #\n", - "# = . . : . . . = . . . : . . = #\n", - "# # # # # # # # # # # # # # # # #\n", - "\"\"\".split(), bingo=50)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [], - "source": [ - "assert len(WWF) == len(SCRABBLE) == 17 * 17\n", - "assert all(sq in EMPTY or sq == OFF for sq in WWF + SCRABBLE)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "# Displaying the Board in HTML\n", + "# HTML Display of the Board\n", "\n", - "I want to diaplay the board in HTML, as a table with different background colors for the bonus squares; and gold-colored letter tiles. I also want to display the point values for each letter on the tiles; I'll use a `defaultdict` of `{letter: int}` named `POINTS` for that." + "I want to diaplay the board in HTML, as a table with different background colors for the bonus squares; and gold-colored letter tiles. " ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 13, "metadata": { "button": false, "collapsed": false, @@ -642,34 +492,42 @@ " \"An HTML representation of the board.\"\n", " size = board.down - 2\n", " squares = [square_html(sq) for sq in board if sq != OFF]\n", - " row = ('' + '{}' * size)\n", - " return ('' + row * size + '
').format(*squares)\n", + " row = ('' + size * '{}')\n", + " return ('' + (size * row) + '
').format(*squares)\n", " \n", - "board_colors = {\n", + "def square_html(sq) -> str:\n", + " \"An HTML representation of a square.\"\n", + " color, size, text = (bonus_colors[sq] if sq in EMPTY else ('gold', 120, sq))\n", + " return ('''{}{}'''\n", + " .format(color, size, text, POINTS[text] or ''))\n", + "\n", + "bonus_colors = {\n", " DL: ('lightblue', 66, 'DL'),\n", " TL: ('lightgreen', 66, 'TL'),\n", " DW: ('lightcoral', 66, 'DW'),\n", " TW: ('orange', 66, 'TW'),\n", " SL: ('whitesmoke', 66, ''),\n", - " STAR: ('violet', 100, '✭')}\n", - "\n", - "def square_html(sq) -> str:\n", - " \"An HTML representation of a square.\"\n", - " color, size, text = board_colors.get(sq, ('gold', 120, sq))\n", - " if text.isupper(): \n", - " text = '{}{}'.format(text, POINTS.get(text, ''))\n", - " params = \"width:25px; height:25px; text-align:center; padding:0px;\"\n", - " style = \"background-color:{}; font-size:{}%\".format(color, size, text)\n", - " return '' + text\n", - "\n", - "POINTS = defaultdict(int, \n", - " A=1, B=3, C=3, D=2, E=1, F=4, G=2, H=4, I=1, J=8, K=5, L=1, M=3, \n", - " N=1, O=1, P=3, Q=10, R=1, S=1, T=1, U=1, V=4, W=4, X=8, Y=4, Z=10)" + " STAR: ('violet', 99, '✭')}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "button": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "source": [ + "We'll define the standard boards for Words with Friends® and Scrabble®:" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 14, "metadata": { "button": false, "collapsed": false, @@ -683,95 +541,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWDW
TLDLDLTL
DWTLTLDW
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DLDWDWDL
TWTLTLTW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWDW
TLDLDLTL
DWTLTLDW
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DLDWDWDL
TWTLTLTW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -787,26 +870,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -820,13 +903,13 @@ " '.',\n", " '.',\n", " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", + " '∴',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", @@ -834,161 +917,181 @@ " '.',\n", " '.',\n", " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", " '.',\n", - " ':',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 19, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "WWF = Board(\"\"\"\n", + "█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n", + "█ . . . ≡ . . ∴ . ∴ . . ≡ . . . █\n", + "█ . . : . . = . . . = . . : . . █\n", + "█ . : . . : . . . . . : . . : . █\n", + "█ ≡ . . ∴ . . . = . . . ∴ . . ≡ █\n", + "█ . . : . . . : . : . . . : . . █\n", + "█ . = . . . ∴ . . . ∴ . . . = . █\n", + "█ ∴ . . . : . . . . . : . . . ∴ █\n", + "█ . . . = . . . * . . . = . . . █\n", + "█ ∴ . . . : . . . . . : . . . ∴ █\n", + "█ . = . . . ∴ . . . ∴ . . . = . █\n", + "█ . . : . . . : . : . . . : . . █\n", + "█ ≡ . . ∴ . . . = . . . ∴ . . ≡ █\n", + "█ . : . . : . . . . . : . . : . █\n", + "█ . . : . . = . . . = . . : . . █\n", + "█ . . . ≡ . . ∴ . ∴ . . ≡ . . . █\n", + "█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n", + "\"\"\".split(), bingo=35)\n", + "\n", "WWF" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -996,34 +1099,306 @@ { "data": { "text/html": [ - "
TWDLTWDLTW
DWTLTLDW
DWDLDLDW
DLDWDLDWDL
DWDW
TLTLTLTL
DLDLDLDL
TWDLDLTW
DLDLDLDL
TLTLTLTL
DWDW
DLDWDLDWDL
DWDLDLDW
DWTLTLDW
TWDLTWDLTW
" + "
TWDLTWDLTW
DWTLTLDW
DWDLDLDW
DLDWDLDWDL
DWDW
TLTLTLTL
DLDLDLDL
TWDLDLTW
DLDLDLDL
TLTLTLTL
DWDW
DLDWDLDWDL
DWDLDLDW
DWTLTLDW
TWDLTWDLTW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '=',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " ':',\n", + " '.',\n", + " '.',\n", " '=',\n", " '.',\n", " '.',\n", @@ -1031,114 +1406,67 @@ " ':',\n", " '.',\n", " '.',\n", + " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", " '.',\n", " '.',\n", " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", " ':',\n", " '.',\n", " '.',\n", @@ -1150,9 +1478,9 @@ " ':',\n", " '.',\n", " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -1168,97 +1496,32 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ':',\n", " '.',\n", " '.',\n", " '.',\n", @@ -1266,36 +1529,121 @@ " '.',\n", " '.',\n", " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '.',\n", + " '.',\n", + " ':',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 20, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "SCRABBLE = Board(\"\"\"\n", + "█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n", + "█ ≡ . . : . . . ≡ . . . : . . ≡ █\n", + "█ . = . . . ∴ . . . ∴ . . . = . █\n", + "█ . . = . . . : . : . . . = . . █\n", + "█ : . . = . . . : . . . = . . : █\n", + "█ . . . . = . . . . . = . . . . █\n", + "█ . ∴ . . . ∴ . . . ∴ . . . ∴ . █\n", + "█ . . : . . . : . : . . . : . . █\n", + "█ ≡ . . : . . . * . . . : . . ≡ █\n", + "█ . . : . . . : . : . . . : . . █\n", + "█ . ∴ . . . ∴ . . . ∴ . . . ∴ . █\n", + "█ . . . . = . . . . . = . . . . █\n", + "█ : . . = . . . : . . . = . . : █\n", + "█ . . = . . . : . : . . . = . . █\n", + "█ . = . . . ∴ . . . ∴ . . . = . █\n", + "█ ≡ . . : . . . ≡ . . . : . . ≡ █\n", + "█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n", + "\"\"\".split(), bingo=50)\n", + "\n", "SCRABBLE" ] }, @@ -1323,7 +1671,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 16, "metadata": { "button": false, "collapsed": true, @@ -1363,7 +1711,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 17, "metadata": { "button": false, "collapsed": false, @@ -1377,95 +1725,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2DWB3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2DWB3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -1481,26 +2054,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -1515,12 +2088,12 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", @@ -1528,13 +2101,13 @@ " 'E',\n", " '.',\n", " 'C',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -1549,8 +2122,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -1560,14 +2133,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -1579,29 +2152,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -1617,61 +2190,61 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 22, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1684,7 +2257,6 @@ " Play(158, DOWN, 'MUSES', ''),\n", " Play(172, ACROSS, 'VIRULeNT', ''),\n", " Play(213, ACROSS, 'RED', ''),\n", - " Play(198, ACROSS, 'LYTHE', ''),\n", " Play(147, DOWN, 'CHILDREN', ''),\n", " Play(164, ACROSS, 'HEARD', ''),\n", " Play(117, DOWN, 'BRIDLES', ''),\n", @@ -1707,338 +2279,17 @@ } }, "source": [ - "# Strategy for Finding Legal Plays\n", + "# Strategy for Finding All Legal Plays\n", "\n", "This is our strategy for finding all possible legal plays on a board:\n", "\n", "1. Find all *anchor squares* on the board. An anchor square is an empty square that is adjacent to a letter on the board—every legal move must place a letter on an anchor square. (One exception: on the game's first play, there are no letters on the board, and the `STAR` square in the center counts as the only anchor square.)\n", - "2. Using just the letters in the rack, find all *prefixes* of words in the dictionary. For example, with the rack `ABC`, we find that `B`, `BA`, and `BAC` are all prefixes of the word `BACK` (and the rack contains other prefixes of other words as well).\n", + "2. Using just the letters in the rack, find all *prefixes* of words in the dictionary. For example, with the rack `ABC`, we find that `B`, `BA`, and `BAC` are all prefixes of the word `BACK` (and the rack contains other prefixes of other words as well, such as `CA` and `CAB`).\n", "3. For each anchor square and for both directions (across and down):\n", " - Try each prefix before the anchor (that is, to the left or above the anchor). Don't allow a prefix to extend to another anchor or off the board. That means we won't have to worry about *cross words* for the prefix. If there are already letters on the board before the anchor point, use them as the (only possible) prefix rather than using the prefixes from the rack. For each prefix that fits:\n", - " - Starting at the anchor, march forward (or down) one square at a time, trying to fill empty squares with each possible letter from the rack that forms a valid prefix of a word in the dictionary. If the march forward hits letters that are already on the board, make sure they form a valid prefix too. Also check that any cross words are valid words. When we make a complete word (with an empty or `OFF` square ahead), yield the play that made the word.\n", + " - Starting at the anchor, march across (or down) one square at a time, trying to fill empty squares with each possible letter from the rack that forms a valid prefix of a word in the dictionary. If the march hits letters that are already on the board, make sure they form a valid prefix too. Also check that any cross words are valid words. When we make a complete word (with an empty or `OFF` square ahead), yield the play that made the word.\n", " \n", - "So, each legal play will have zero or more prefix letters (which either all come from the rack or all were already on the board), followed by one letter from the rack covering an anchor square, followed by zero or more additional letters (which can be a mix of letters from the rack and letters already on the board), followed by an empty or `OFF` square." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "# Prefixes\n", - "\n", - "Here we define the set of all prefixes of all words in the dictionary, and investigate the set:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "button": false, - "collapsed": true, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [], - "source": [ - "def dict_prefixes(dictionary) -> set:\n", - " \"The set of all prefixes of each word in a dictionary.\"\n", - " return {word[:i] for word in dictionary for i in range(len(word))}\n", - "\n", - "PREFIXES = dict_prefixes(DICTIONARY)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "276374" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(PREFIXES)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1.5992014813100335" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(PREFIXES) / len(DICTIONARY)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['TOASTM',\n", - " 'SYNTAX',\n", - " 'BOOGEYM',\n", - " 'MASSAS',\n", - " 'TONS',\n", - " 'PYROT',\n", - " 'ETHNOCENTRICIT',\n", - " 'TROOPIA',\n", - " 'EVENTFULNES',\n", - " 'PENITENTIA']" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "random.sample(PREFIXES, 10)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Here are all the prefixes from a tiny dictionary of three words. Note that the empty string is a prefix, and we include `HELP` because it is a prefix of `HELPER`, but we don't include `HELPER`, because there is no letter we can add to `HELPER` to make a word in this dictionary:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'', 'H', 'HE', 'HEL', 'HELL', 'HELP', 'HELPE'}" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict_prefixes({'HELLO', 'HELP', 'HELPER'})" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "The function `rack_prefixes` gives the set of prefixes that can be made just from the letters in the rack. Most of the work is done by `extend_prefixes`, which accumulates a set of prefixes into `results`:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "button": false, - "collapsed": true, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [], - "source": [ - "def rack_prefixes(rack) -> set: \n", - " \"All word prefixes that can be made by the rack.\"\n", - " return extend_prefixes('', rack, set())\n", - "\n", - "def extend_prefixes(prefix, rack, results) -> set:\n", - " if prefix.upper() in PREFIXES:\n", - " results.add(prefix)\n", - " for L in letters(rack):\n", - " extend_prefixes(prefix+L, remove(L, rack), results)\n", - " return results" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'', 'A', 'AB', 'AC', 'B', 'BA', 'BAC', 'C', 'CA', 'CAB'}" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rack = 'ABC'\n", - "rack_prefixes(rack)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "The number of prefixes in a rack is usually on the order of a hundred, unless there is a blank in the rack:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "155" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(rack_prefixes('LETTERS'))" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "120" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(rack_prefixes('HJRIPUM'))" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1590" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(rack_prefixes('LETTER_'))" + "So, each legal play will have zero or more prefix letters (which either all come from the rack or all were already on the board), followed by one letter from the rack covering an anchor square, followed by zero or more additional letters (which can be a mix of letters from the rack and letters already on the board). A legal play must be proceeded and followed by either an empty or `OFF` square." ] }, { @@ -2059,7 +2310,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 18, "metadata": { "button": false, "collapsed": false, @@ -2083,7 +2334,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 19, "metadata": { "button": false, "collapsed": false, @@ -2100,7 +2351,7 @@ "[144]" ] }, - "execution_count": 34, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -2121,14 +2372,35 @@ } }, "source": [ - "# Plays on Example Board\n", + "# Prefixes\n", "\n", - "Let's work through the process of finding plays on the example `board`. First, we'll find all the anchors:" + "Here we define the set of all prefixes of all words in the dictionary, and investigate the set:" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 20, + "metadata": { + "button": false, + "collapsed": true, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [], + "source": [ + "def dict_prefixes(dictionary) -> set:\n", + " \"The set of all prefixes of each word in a dictionary.\"\n", + " return {word[:i] for word in dictionary for i in range(len(word))}\n", + "\n", + "PREFIXES = dict_prefixes(DICTIONARY)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, "metadata": { "button": false, "collapsed": false, @@ -2142,10 +2414,347 @@ { "data": { "text/plain": [ - "53" + "276374" ] }, - "execution_count": 35, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(PREFIXES)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['REDRAWER',\n", + " 'TRIVE',\n", + " 'MENT',\n", + " 'CORPO',\n", + " 'TALESME',\n", + " 'DAVENPO',\n", + " 'TEMPORIZATIO',\n", + " 'PLURA',\n", + " 'CRUP',\n", + " 'SPOOR']" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "random.sample(PREFIXES, 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "button": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "source": [ + "Here are all the prefixes from a tiny dictionary of three words. Note that the empty string is a prefix, and `HELP` is included because it is a prefix of `HELPER`, but `HELPER` is not included because there is no letter we can add to `HELPER` to make a word in this dictionary:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "button": false, + "collapsed": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'', 'H', 'HE', 'HEL', 'HELL', 'HELP', 'HELPE'}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict_prefixes({'HELLO', 'HELP', 'HELPER'})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "button": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "source": [ + "The function `rack_prefixes` gives the set of prefixes that can be made just from the letters in the rack (returning them in shortest-first order). Most of the work is done by `extend_prefixes`, which accumulates a set of prefixes into `results`. The function `remove(tiles, rack)` removes letters from a rack (after they have been played)." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "button": false, + "collapsed": true, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [], + "source": [ + "def rack_prefixes(rack) -> set: \n", + " \"All word prefixes that can be made by the rack.\"\n", + " return sorted(set(extend_prefixes('', rack, set())), key=len)\n", + "\n", + "def extend_prefixes(prefix, rack, results) -> set:\n", + " \"Add possible prefixes to `results`.\"\n", + " if prefix.upper() in PREFIXES:\n", + " results.add(prefix)\n", + " for L in letters(rack):\n", + " extend_prefixes(prefix+L, remove(L, rack), results)\n", + " return results\n", + "\n", + "def remove(tiles, rack) -> str:\n", + " \"Return a copy of rack with the given tile(s) removed.\"\n", + " for tile in tiles:\n", + " if tile.islower(): tile = BLANK\n", + " rack = rack.replace(tile, '', 1)\n", + " return rack" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "button": false, + "collapsed": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['', 'A', 'B', 'C', 'BA', 'AB', 'CA', 'AC', 'CAB', 'BAC']" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rack = 'ABC'\n", + "rack_prefixes(rack)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "button": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "source": [ + "The number of prefixes in a rack is usually on the order of a hundred or two:" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "button": false, + "collapsed": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "155" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(rack_prefixes('LETTERS'))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "196" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(rack_prefixes('ERYINNA'))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "178" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(rack_prefixes('XNMNAIE'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unless there is a blank in the rack, in which case it is more like a thousand or two:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "button": false, + "collapsed": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1590" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(rack_prefixes('LETTER_'))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1809" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(rack_prefixes('ERYINN_'))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "button": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "source": [ + "# Plays on Example Board\n", + "\n", + "Let's work through the process of finding plays on the example `board`. First, we'll find all the anchors:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "button": false, + "collapsed": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "54" + ] + }, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -2171,7 +2780,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 32, "metadata": { "button": false, "collapsed": false, @@ -2185,95 +2794,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLB3
TLDLT1O1U1R1
G2DWB3E1C3I1
A1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1I1L1
E1S1E1L1Y4T1H4E1
TWE1R1E1D2S1
DLS1R1DL
DLDWE1DL
TWTLTLN1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLB3
TLDLT1O1U1R1
G2DWB3E1C3I1
A1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1I1L1
E1S1E1L1DLE1
TWE1R1E1D2S1
DLS1R1DL
DLDWE1DL
TWTLTLN1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -2289,26 +3123,26 @@ " ':',\n", " '.',\n", " '*',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '*',\n", " '*',\n", " '*',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '*',\n", " '.',\n", " '.',\n", @@ -2323,12 +3157,12 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '*',\n", " 'G',\n", " '*',\n", - " '-',\n", + " '=',\n", " '*',\n", " '.',\n", " '*',\n", @@ -2340,8 +3174,8 @@ " '*',\n", " '*',\n", " 'I',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '*',\n", " 'A',\n", " '*',\n", @@ -2357,8 +3191,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '*',\n", " 'V',\n", " 'I',\n", @@ -2374,8 +3208,8 @@ " '*',\n", " '*',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '*',\n", " 'E',\n", " '*',\n", @@ -2387,13 +3221,13 @@ " 'E',\n", " '*',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '*',\n", + " ':',\n", + " '*',\n", " 'E',\n", - " '#',\n", - " '#',\n", - " '=',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '*',\n", " '.',\n", " '*',\n", @@ -2405,11 +3239,11 @@ " 'E',\n", " 'D',\n", " '*',\n", - " '*',\n", + " '.',\n", " '*',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -2425,14 +3259,14 @@ " '.',\n", " ':',\n", " '*',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '*',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", @@ -2442,44 +3276,44 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '*',\n", " 'N',\n", " '*',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 36, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -2487,7 +3321,7 @@ "source": [ "board2 = Board(board)\n", "for a in anchors:\n", - " board2[a] = STAR\n", + " board2[a] = STAR\n", " \n", "board2" ] @@ -2508,7 +3342,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 33, "metadata": { "button": false, "collapsed": false, @@ -2525,7 +3359,7 @@ "88" ] }, - "execution_count": 37, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -2539,7 +3373,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 34, "metadata": { "button": false, "collapsed": false, @@ -2553,10 +3387,10 @@ { "data": { "text/plain": [ - "' BANQ BH KANB KAC HACK ACK QAN BAH CAB CHAB BAN HACKB NA CH KHAN CAH AH ANKH H BHA CHAK CANK BAC KAH NAK KBA CN ABH ANK QA HAN NACH Q CAN BA BAK K HAC A AQ HAK BHAK CA NAB NAC AB BHAN KNAC C AK CHA KA HANK HACKN ACQ HANC N B ANC BANK KN HA KAN BACH CHAQ BACKH AN ABN KAB KACH KB AHC CHAN CAK BANKC BACK ANH KH ACKN AC BANC KNA KHA HAB ANCH ACH ACN'" + "' C H Q K A B N BA CA BH KH CN KB KA KN AB AQ CH NA AC HA AN AH AK QA CHA KAC KAN HAK KNA KAB BAH BHA CAB ANK AHC ABH HAC ANC KBA KAH CAK CAH NAC ACQ BAK ACN KHA NAK BAC CAN HAN ANH ACK NAB HAB ABN QAN BAN ACH ACKN HANK BANC KANB CHAN CHAK CANK NACH KACH BACH KNAC HANC KHAN HACK BACK BHAN ANCH ANKH CHAB BANQ BANK CHAQ BHAK HACKB BANKC BACKH HACKN'" ] }, - "execution_count": 38, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2581,7 +3415,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 35, "metadata": { "button": false, "collapsed": false, @@ -2595,95 +3429,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2DWB3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2DWB3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -2699,26 +3758,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -2733,12 +3792,12 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", - " '-',\n", + " '=',\n", " '*',\n", " '.',\n", " '.',\n", @@ -2746,13 +3805,13 @@ " 'E',\n", " '.',\n", " 'C',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -2767,8 +3826,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -2778,14 +3837,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -2797,29 +3856,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -2835,61 +3894,61 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 39, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -2917,7 +3976,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 36, "metadata": { "button": false, "collapsed": false, @@ -2931,95 +3990,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3B3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3B3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -3035,26 +4319,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -3069,8 +4353,8 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", @@ -3082,13 +4366,13 @@ " 'E',\n", " '.',\n", " 'C',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -3103,8 +4387,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -3114,14 +4398,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -3133,29 +4417,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -3171,61 +4455,61 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 40, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -3251,7 +4535,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 37, "metadata": { "button": false, "collapsed": false, @@ -3265,95 +4549,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1B3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1B3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -3369,26 +4878,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -3403,8 +4912,8 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", @@ -3416,13 +4925,13 @@ " 'E',\n", " '.',\n", " 'C',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -3437,8 +4946,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -3448,14 +4957,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -3467,29 +4976,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -3505,61 +5014,61 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 41, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -3586,7 +5095,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 38, "metadata": { "button": false, "collapsed": false, @@ -3600,95 +5109,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -3704,26 +5438,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -3738,8 +5472,8 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", @@ -3751,13 +5485,13 @@ " 'E',\n", " '.',\n", " 'C',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -3772,8 +5506,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -3783,14 +5517,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -3802,29 +5536,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -3840,68 +5574,68 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 42, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "board3[142:144] = 'CK'\n", - "assert 'BACK' in PREFIXES\n", + "assert 'BACKBE' in PREFIXES\n", "board3" ] }, @@ -3921,7 +5655,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 39, "metadata": { "button": false, "collapsed": false, @@ -3935,95 +5669,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1N1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1N1C3DWI1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -4039,26 +5998,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -4073,8 +6032,8 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", @@ -4086,13 +6045,13 @@ " 'E',\n", " 'N',\n", " 'C',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -4107,8 +6066,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -4118,14 +6077,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -4137,29 +6096,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -4175,61 +6134,61 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 43, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -4256,7 +6215,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 40, "metadata": { "button": false, "collapsed": false, @@ -4270,95 +6229,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1N1C3H4I1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1N1C3H4I1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -4374,26 +6558,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -4408,8 +6592,8 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", @@ -4425,9 +6609,9 @@ " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -4442,8 +6626,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -4453,14 +6637,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -4472,29 +6656,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -4510,61 +6694,61 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 44, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -4595,7 +6779,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 41, "metadata": { "button": false, "collapsed": true, @@ -4637,7 +6821,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 42, "metadata": { "button": false, "collapsed": false, @@ -4657,8 +6841,9 @@ " else: # Prefixes from rack fit in space before anchor\n", " maxlen = (anchor - scan_to_anchor(board, anchor, -dir)) // dir\n", " for prefix in prefixes:\n", - " if len(prefix) <= maxlen:\n", - " yield Play(anchor - len(prefix) * dir, dir, prefix, remove(prefix, rack))" + " if len(prefix) > maxlen:\n", + " return\n", + " yield Play(anchor - len(prefix) * dir, dir, prefix, remove(prefix, rack))" ] }, { @@ -4677,7 +6862,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 43, "metadata": { "button": false, "collapsed": true, @@ -4735,7 +6920,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 44, "metadata": { "button": false, "collapsed": true, @@ -4758,7 +6943,7 @@ "\n", "def valid_crossword(cword, L) -> bool:\n", " \"Is placing letter L valid (with respective to the crossword)?\"\n", - " return len(cword) == 1 or cword.replace('.', L).upper() in DICTIONARY\n", + " return len(cword) == 1 or is_word(cword.replace('.', L))\n", "\n", "def other(dir, board) -> Direction:\n", " \"The other direction (across/down) on the board.\"\n", @@ -4767,7 +6952,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 45, "metadata": { "button": false, "collapsed": false, @@ -4784,7 +6969,7 @@ "'.MUSES'" ] }, - "execution_count": 49, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -4795,7 +6980,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 46, "metadata": { "button": false, "collapsed": false, @@ -4812,7 +6997,7 @@ "'T.E'" ] }, - "execution_count": 50, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -4837,7 +7022,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 47, "metadata": { "button": false, "collapsed": false, @@ -4854,7 +7039,7 @@ "True" ] }, - "execution_count": 51, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -4879,7 +7064,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 48, "metadata": { "button": false, "collapsed": false, @@ -4903,7 +7088,7 @@ " Play(start=141, dir=1, letters='', rack='ABCHKNQ')}" ] }, - "execution_count": 52, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -4928,7 +7113,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 49, "metadata": { "button": false, "collapsed": false, @@ -4948,7 +7133,7 @@ " Play(start=140, dir=1, letters='BAN', rack='CHKQ')}" ] }, - "execution_count": 53, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -4970,12 +7155,12 @@ "source": [ "# Scoring\n", "\n", - "Now we'll show how to count up the points made by a play. The score is the sum of the word score for the play, plus a bingo score if all seven letters are used, plus the sum of the word scores for any cross words. The word score is the sum of the letter scores (where each letter score may be doubled or tripled by a bonus square when the letter is first played on the square), all multiplied by any word bonus(es) encountered by the newly-placed letters." + "Now we'll show how to count up the points made by a play. The score is the sum of the word score for the play, plus the sum of the word scores for any cross words, plus a bingo score if all seven letters are used. The word score is the sum of the letter scores (where each letter score may be doubled or tripled by a bonus square when the letter is first played on the square), all multiplied by any word bonus(es) encountered by the newly-placed letters." ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 50, "metadata": { "button": false, "collapsed": false, @@ -5025,7 +7210,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 51, "metadata": { "button": false, "collapsed": false, @@ -5043,8 +7228,8 @@ " \n", "def enumerate_play(play) -> list:\n", " \"List (square_number, letter) pairs for each tile in the play.\"\n", - " return [(play.start + i * play.dir, L) \n", - " for (i, L) in enumerate(play.letters)]\n", + " return [(play.start + i * play.dir, play.letters[i]) \n", + " for i in range(len(play.letters))]\n", " \n", "def cross_plays(board, play):\n", " \"Generate all plays for words that cross this play.\"\n", @@ -5072,7 +7257,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 52, "metadata": { "button": false, "collapsed": false, @@ -5089,7 +7274,7 @@ "116" ] }, - "execution_count": 56, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -5114,7 +7299,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 53, "metadata": { "button": false, "collapsed": true, @@ -5133,7 +7318,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 54, "metadata": { "button": false, "collapsed": false, @@ -5150,7 +7335,7 @@ "Play(start=140, dir=1, letters='BACKBENCH', rack='Q')" ] }, - "execution_count": 58, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -5161,7 +7346,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 55, "metadata": { "button": false, "collapsed": false, @@ -5175,95 +7360,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1N1C3H4I1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1Y4T1H4E1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDWB3
TLDLDLT1O1U1R1
G2B3A1C3K5B3E1N1C3H4I1
TLA1M3N1H4E1A1R1D2
V4I1R1U1L1eN1T1TLI1DWL1
E1DLS1DLE1L1DLE1
TWTLE1DWR1E1D2TLS1
DLS1R1DL
DLDWDWE1DL
TWTLTLN1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -5279,26 +7689,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'B',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -5313,8 +7723,8 @@ " 'O',\n", " 'U',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'G',\n", " '.',\n", @@ -5330,9 +7740,9 @@ " '.',\n", " '.',\n", " 'I',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " 'A',\n", " '.',\n", " '.',\n", @@ -5347,8 +7757,8 @@ " 'A',\n", " 'R',\n", " 'D',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'V',\n", " 'I',\n", @@ -5358,14 +7768,14 @@ " 'e',\n", " 'N',\n", " 'T',\n", - " ';',\n", + " '∴',\n", " 'I',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'L',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " 'E',\n", " ':',\n", @@ -5377,29 +7787,29 @@ " 'E',\n", " '.',\n", " 'L',\n", - " 'Y',\n", - " 'T',\n", - " 'H',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " 'E',\n", + " '.',\n", + " '.',\n", " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'R',\n", " 'E',\n", " 'D',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " 'S',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -5415,61 +7825,61 @@ " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " 'E',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " 'N',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, - "execution_count": 59, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -5496,7 +7906,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 56, "metadata": { "button": false, "collapsed": false, @@ -5506,21 +7916,9 @@ "read_only": false } }, - "outputs": [ - { - "data": { - "text/plain": [ - "100" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "BAG = 'AAAAAAAAABBCCDDDDEEEEEEEEEEEEFFGGGHHIIIIIIIIIJKLLLLMMNNNNNNOOOOOOOOPPQRRRRRRSSSSTTTTTTUUUUVVWWXYYZ__'\n", - "len(BAG)" + "BAG = 9*'A' + 12*'E' + 9*'I' + 8*'O' + 'BBCCDDDDFFGGGHHJKLLLLMMNNNNNNPPQRRRRRRSSSSTTTTTTUUUUVVWWXYYZ__'" ] }, { @@ -5539,7 +7937,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 57, "metadata": { "button": false, "collapsed": true, @@ -5573,15 +7971,16 @@ "def make_one_play(board, p, strategy, scores, racks, bag, verbose) -> Board:\n", " \"\"\"One player, player p, chooses a move according to the strategy.\n", " We make the move, replenish the rack, update scores, and return the new Board.\"\"\"\n", - " rack = racks[p]\n", - " play = strategy(board, racks[p])\n", + " rack = racks[p]\n", + " play = strategy(board, racks[p])\n", " racks[p] = replenish(play.rack, bag)\n", - " points = score(board, play)\n", - " scores[p] += points\n", - " board = make_play(board, play)\n", + " points = score(board, play)\n", + " is_bingo = ('(BINGO!)' if bingo(board, play) else '')\n", + " scores[p]+= points\n", + " board = make_play(board, play)\n", " if verbose:\n", - " display(HTML('Player {} with rack {} makes {}
for {} points; draws: {}; scores: {}'\n", - " .format(p, rack, play, points, racks[p], scores)),\n", + " display(HTML('Player {} with rack {} makes {}
for {} points {}; draws: {}; scores: {}'\n", + " .format(p, rack, play, points, is_bingo, racks[p], scores)),\n", " board)\n", " return board\n", "\n", @@ -5602,7 +8001,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 58, "metadata": { "button": false, "collapsed": false, @@ -5633,7 +8032,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 59, "metadata": { "button": false, "collapsed": false, @@ -5647,7 +8046,7 @@ { "data": { "text/html": [ - "Player 0 with rack NIEUTBT makes Play(start=144, dir=1, letters='BUTTE', rack='NI')
for 14 points; draws: NITDINC; scores: [14, 0]" + "Player 0 with rack EDOSOLB makes Play(start=144, dir=1, letters='BOODLE', rack='S')
for 18 points ; draws: STOYNRR; scores: [18, 0]" ], "text/plain": [ "" @@ -5659,95 +8058,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWB3U1T1T1E1
TLDLDLTL
DWTLTLDW
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DLDWDWDL
TWTLTLTW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWB3O1O1D2L1E1
TLDLDLTL
DWTLTLDW
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DLDWDWDL
TWTLTLTW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -5763,26 +8387,26 @@ " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -5796,1032 +8420,28 @@ " '.',\n", " '.',\n", " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", + " '∴',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 1 with rack IMIOOEE makes Play(start=144, dir=17, letters='BIOME', rack='IOE')
for 18 points; draws: IOEP_OL; scores: [14, 18]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWB3U1T1T1E1
TLDLI1DLTL
DWTLO1TLDW
DLDLM3DLDL
TWTLE1TLTW
DLDLDLDL
DLDWDWDL
TWTLTLTW
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", " 'O',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 0 with rack NITDINC makes Play(start=63, dir=17, letters='INCIDENT', rack='')
for 48 points; draws: RRAXDFA; scores: [62, 18]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLI1DL
TWTLDWN1TW
DLDLDLC3DL
DWTLTLI1DW
TLDLDLD2TL
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1TLT1DW
DLDLM3DLDL
TWTLE1TLTW
DLDLDLDL
DLDWDWDL
TWTLTLTW
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", + " 'O',\n", " 'D',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 1 with rack IOEP_OL makes Play(start=212, dir=1, letters='EOLOPIlE', rack='')
for 80 points; draws: OFUADSE; scores: [62, 98]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLI1DL
TWTLDWN1TW
DLDLDLC3DL
DWTLTLI1DW
TLDLDLD2TL
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1TLT1DW
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLDLDL
DLDWDWDL
TWTLTLTW
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", " 'E',\n", - " '#',\n", - " '#',\n", " '.',\n", - " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", " '.',\n", " '.',\n", " ':',\n", @@ -6833,60 +8453,128 @@ " ':',\n", " '.',\n", " '.',\n", - " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", + " ':',\n", " '.',\n", + " ':',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -6895,7 +8583,7 @@ { "data": { "text/html": [ - "Player 0 with rack RRAXDFA makes Play(start=230, dir=1, letters='FAX', rack='RRDA')
for 45 points; draws: RRDACGA; scores: [107, 98]" + "Player 1 with rack IUSI_IT makes Play(start=146, dir=17, letters='OUISTItI', rack='')
for 53 points (BINGO!); draws: OHAKAQL; scores: [18, 53]" ], "text/plain": [ "" @@ -6907,95 +8595,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLI1DL
TWTLDWN1TW
DLDLDLC3DL
DWTLTLI1DW
TLDLDLD2TL
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1TLT1DW
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLF4A1X8DL
DLDWDWDL
TWTLTLTW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWB3O1O1D2L1E1
TLDLU1DLTL
DWTLI1DW
DLDLDLS1DL
TWTLDWT1TLTW
DLDLI1DLDL
DLDWtDL
TWTLTLI1TW
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " 'N',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -7007,30 +8920,30 @@ " ':',\n", " '.',\n", " '.',\n", - " 'C',\n", + " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " 'I',\n", " '.',\n", - " '-',\n", " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -7041,308 +8954,30 @@ " '.',\n", " '.',\n", " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", " 'O',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", " 'O',\n", + " 'D',\n", " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", " 'E',\n", - " '#',\n", - " '#',\n", " '.',\n", - " ':',\n", " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 1 with rack OFUADSE makes Play(start=180, dir=1, letters='FETUS', rack='OAD')
for 32 points; draws: OADTYTI; scores: [107, 130]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLI1DL
TWTLDWN1TW
DLDLDLC3DL
DWTLTLI1DW
TLDLDLD2TL
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1F4E1T1U1S1
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLF4A1X8DL
DLDWDWDL
TWTLTLTW
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -7351,166 +8986,132 @@ " '.',\n", " '.',\n", " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '.',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", + " ':',\n", " 'S',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", + " '.',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", + " 'T',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", - " ';',\n", " '.',\n", " '.',\n", " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", " ':',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " 'I',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -7519,7 +9120,7 @@ { "data": { "text/html": [ - "Player 0 with rack RRDACGA makes Play(start=112, dir=1, letters='CAIRD', rack='RGA')
for 28 points; draws: RGAEESA; scores: [135, 130]" + "Player 0 with rack STOYNRR makes Play(start=264, dir=1, letters='YIRR', rack='STON')
for 45 points ; draws: STONONE; scores: [63, 53]" ], "text/plain": [ "" @@ -7531,95 +9132,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLI1DL
TWTLDWN1TW
DLDLDLC3DL
DWTLC3A1I1R1D2
TLDLDLD2TL
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1F4E1T1U1S1
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLF4A1X8DL
DLDWDWDL
TWTLTLTW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWB3O1O1D2L1E1
TLDLU1DLTL
DWTLI1DW
DLDLDLS1DL
TWTLDWT1TLTW
DLDLI1DLDL
DLDWtDL
TWTLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", - " 'N',\n", " '.',\n", " '.',\n", " '=',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -7631,30 +9457,30 @@ " ':',\n", " '.',\n", " '.',\n", - " 'C',\n", + " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", + " '∴',\n", " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -7665,476 +9491,164 @@ " '.',\n", " '.',\n", " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", " 'E',\n", " '.',\n", " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", + " ':',\n", " 'S',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '.',\n", " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 1 with rack OADTYTI makes Play(start=248, dir=1, letters='TOADY', rack='TI')
for 38 points; draws: TIROSIA; scores: [135, 168]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWDL
DLDLDLI1DL
TWTLDWN1TW
DLDLDLC3DL
DWTLC3A1I1R1D2
TLDLDLD2TL
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1F4E1T1U1S1
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLF4A1X8DL
DLDWT1O1A1D2Y4
TWTLTLTW
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -8143,7 +9657,7 @@ { "data": { "text/html": [ - "Player 0 with rack RGAEESA makes Play(start=49, dir=17, letters='GREASE', rack='A')
for 36 points; draws: AERGQPG; scores: [171, 168]" + "Player 1 with rack OHAKAQL makes Play(start=212, dir=1, letters='LOTAH', rack='KAQ')
for 32 points ; draws: KAQDEWU; scores: [63, 85]" ], "text/plain": [ "" @@ -8155,95 +9669,320 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDLG2
DLDLDLI1DLR1
TWTLDWN1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLDLDLD2E1
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1F4E1T1U1S1
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLF4A1X8DL
DLDWT1O1A1D2Y4
TWTLTLTW
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLDW
TLDLDLTL
DWB3O1O1D2L1E1
TLDLU1DLTL
DWTLI1DW
DLDLDLS1DL
TWTLL1O1T1A1H4TW
DLDLI1DLDL
DLDWtDL
TWTLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " 'N',\n", + " '=',\n", " '.',\n", " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", @@ -8255,30 +9994,30 @@ " ':',\n", " '.',\n", " '.',\n", - " 'C',\n", + " '.',\n", " ':',\n", " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", " '.',\n", - " '-',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", @@ -8289,164 +10028,164 @@ " '.',\n", " '.',\n", " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", " 'E',\n", " '.',\n", " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", " '.',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", + " ':',\n", " 'S',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", + " '.',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", " 'L',\n", " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", " 'T',\n", - " 'O',\n", " 'A',\n", - " 'D',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -8455,7 +10194,7 @@ { "data": { "text/html": [ - "Player 1 with rack TIROSIA makes Play(start=267, dir=1, letters='SOAR', rack='TII')
for 26 points; draws: TIIEANA; scores: [171, 194]" + "Player 0 with rack STONONE makes Play(start=116, dir=17, letters='ONSET', rack='ON')
for 30 points ; draws: ONROBEM; scores: [93, 85]" ], "text/plain": [ "" @@ -8467,298 +10206,523 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDLG2
DLDLDLI1DLR1
TWTLDWN1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLDLDLD2E1
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1F4E1T1U1S1
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLF4A1X8DL
DLDWT1O1A1D2Y4
TWTLTLS1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLO1
TLDLDLN1TL
DWB3O1O1D2L1E1S1
TLDLU1DLE1TL
DWTLI1T1
DLDLDLS1DL
TWTLL1O1T1A1H4TW
DLDLI1DLDL
DLDWtDL
TWTLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", " '.',\n", " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", + " '∴',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", " 'E',\n", + " 'S',\n", " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '∴',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", - " ':',\n", - " 'N',\n", " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", " 'T',\n", - " 'U',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", " 'S',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", + " '.',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", " 'L',\n", " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", " 'T',\n", - " 'O',\n", " 'A',\n", - " 'D',\n", - " 'Y',\n", + " 'H',\n", " '.',\n", - " '#',\n", - " '#',\n", " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", " '.',\n", - " ';',\n", + " 't',\n", " '.',\n", " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -8767,7 +10731,7 @@ { "data": { "text/html": [ - "Player 0 with rack AERGQPG makes Play(start=262, dir=1, letters='GAPE', rack='RQG')
for 21 points; draws: RQGENYJ; scores: [192, 194]" + "Player 1 with rack KAQDEWU makes Play(start=168, dir=17, letters='DAWK', rack='QEU')
for 57 points ; draws: QEURLVI; scores: [93, 142]" ], "text/plain": [ "" @@ -8779,997 +10743,456 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWDLG2
DLDLDLI1DLR1
TWTLDWN1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLDLDLD2E1
DWB3U1T1T1E1
TLDLI1DLN1TL
DWTLO1F4E1T1U1S1
DLDLM3DLDL
TWTLE1O1L1O1P3I1lE1
DLDLF4A1X8DL
DLDWT1O1A1D2Y4
TWG2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDL
TWTLDWTLTW
DLDLDLDL
DWTLTLO1
TLDLDLN1TL
DWB3O1O1D2L1E1S1
TLDLU1DLE1D2
DWTLI1T1A1
DLDLDLS1DLW4
TWTLL1O1T1A1H4K5
DLDLI1DLDL
DLDWtDL
TWTLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", " '.',\n", " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", " '.',\n", " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", + " '∴',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", " 'E',\n", + " 'S',\n", " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", - " ':',\n", - " 'N',\n", " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", " 'T',\n", - " 'U',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", " 'S',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", " '.',\n", " ':',\n", " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ':',\n", - " 'M',\n", - " ':',\n", + " '∴',\n", " '.',\n", " '.',\n", " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", " 'L',\n", " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", " 'T',\n", - " 'O',\n", " 'A',\n", - " 'D',\n", - " 'Y',\n", + " 'H',\n", " '.',\n", - " '#',\n", - " '#',\n", " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", - " 'E',\n", - " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 1 with rack TIIEANA makes Play(start=176, dir=17, letters='TAENIA', rack='I')
for 24 points; draws: IIKRZDH; scores: [192, 218]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWDLG2
DLDLDLI1DLR1
TWTLDWN1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLDLDLD2E1
DWB3U1T1T1E1
TLDLI1DLN1TL
DWT1O1F4E1T1U1S1
DLA1DLM3DLDL
TWTLE1E1O1L1O1P3I1lE1
DLDLN1F4A1X8DL
DLI1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", - " 'E',\n", - " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 0 with rack RQGENYJ makes Play(start=205, dir=1, letters='GYRENE', rack='QJ')
for 36 points; draws: QJLLEHE; scores: [228, 218]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWDLG2
DLDLDLI1DLR1
TWTLDWN1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLDLDLD2E1
DWB3U1T1T1E1
TLDLI1DLN1TL
DWT1O1F4E1T1U1S1
DLA1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLDLN1F4A1X8DL
DLI1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", - " 'E',\n", - " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Player 1 with rack IIKRZDH makes Play(start=45, dir=17, letters='KHI', rack='IRZD')
for 25 points; draws: IRZDIIO; scores: [228, 243]" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
TWTLTLTW
DLDWDWK5DLG2
DLDLH4I1DLR1
TWTLDWI1N1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLDLDLD2E1
DWB3U1T1T1E1
TLDLI1DLN1TL
DWT1O1F4E1T1U1S1
DLA1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLDLN1F4A1X8DL
DLI1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" - ], - "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", " 'K',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -9779,234 +11202,64 @@ " '.',\n", " '.',\n", " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", " ':',\n", " '.',\n", " '.',\n", " ':',\n", - " 'N',\n", " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", " '.',\n", " '=',\n", " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", - " 'E',\n", " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -10015,7 +11268,7 @@ { "data": { "text/html": [ - "Player 0 with rack QJLLEHE makes Play(start=138, dir=17, letters='JELLY', rack='QHE')
for 30 points; draws: QHEBMNO; scores: [258, 243]" + "Player 0 with rack ONROBEM makes Play(start=66, dir=17, letters='BROMO', rack='NE')
for 41 points ; draws: NEETN_A; scores: [134, 142]" ], "text/plain": [ "" @@ -10027,61 +11280,456 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWK5DLG2
DLDLH4I1DLR1
TWTLDWI1N1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLDLDLD2E1
J8DWB3U1T1T1E1
TLE1DLI1DLN1TL
L1T1O1F4E1T1U1S1
L1DLA1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLDLN1F4A1X8DL
DLI1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWTLR1
DLDLDLDLO1
DWTLTLO1M3
TLDLDLN1O1
DWB3O1O1D2L1E1S1
TLDLU1DLE1D2
DWTLI1T1A1
DLDLDLS1DLW4
TWTLL1O1T1A1H4K5
DLDLI1DLDL
DLDWtDL
TWTLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", " 'K',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -10091,234 +11739,64 @@ " '.',\n", " '.',\n", " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", " ':',\n", " '.',\n", " '.',\n", " ':',\n", - " 'N',\n", " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", " '.',\n", " '=',\n", " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", - " 'E',\n", " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -10327,7 +11805,7 @@ { "data": { "text/html": [ - "Player 1 with rack IRZDIIO makes Play(start=123, dir=17, letters='IODIZER', rack='I')
for 34 points; draws: IVUTLON; scores: [258, 277]" + "Player 1 with rack QEURLVI makes Play(start=80, dir=17, letters='QUELL', rack='RVI')
for 34 points ; draws: RVIDTHA; scores: [134, 176]" ], "text/plain": [ "" @@ -10339,61 +11817,456 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWK5DLG2
DLDLH4I1DLR1
TWTLDWI1N1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLI1DLDLD2E1
J8O1B3U1T1T1E1
TLE1D2DLI1DLN1TL
L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
DLI1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLU1DLE1D2
DWTLI1T1A1
DLDLDLS1DLW4
TWTLL1O1T1A1H4K5
DLDLI1DLDL
DLDWtDL
TWTLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", " 'K',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -10403,234 +12276,64 @@ " '.',\n", " '.',\n", " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", " 'I',\n", " ':',\n", " '.',\n", " '.',\n", + " ':',\n", " '.',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", - " 'Z',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", - " 'E',\n", " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -10639,7 +12342,7 @@ { "data": { "text/html": [ - "Player 0 with rack QHEBMNO makes Play(start=154, dir=17, letters='HE', rack='QBMNO')
for 28 points; draws: QBMNOVS; scores: [286, 277]" + "Player 0 with rack NEETN_A makes Play(start=190, dir=1, letters='NEATNEsS', rack='')
for 47 points (BINGO!); draws: VEXEPIL; scores: [181, 176]" ], "text/plain": [ "" @@ -10651,61 +12354,456 @@ { "data": { "text/html": [ - "
TWTLTLTW
DLDWDWK5DLG2
DLDLH4I1DLR1
TWTLDWI1N1E1
DLDLDLC3DLA1
DWTLC3A1I1R1D2S1
TLI1DLDLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
DLI1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLU1DLE1D2
DWTLI1T1A1
N1E1A1T1N1E1sS1DLW4
TWTLL1O1T1A1H4K5
DLDLI1DLDL
DLDWtDL
TWTLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", - " ';',\n", + " '∴',\n", " '.',\n", " '.',\n", - " '=',\n", + " '≡',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '-',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", " 'K',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", @@ -10715,234 +12813,64 @@ " '.',\n", " '.',\n", " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", " 'I',\n", " ':',\n", " '.',\n", " '.',\n", + " ':',\n", " '.',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", - " 'Z',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", - " 'E',\n", " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -10951,7 +12879,7 @@ { "data": { "text/html": [ - "Player 1 with rack IVUTLON makes Play(start=22, dir=17, letters='VOLUTIN', rack='')
for 50 points; draws: _UWEARW; scores: [286, 327]" + "Player 1 with rack RVIDTHA makes Play(start=174, dir=17, letters='DEARTH', rack='VI')
for 36 points ; draws: VINESTI; scores: [181, 212]" ], "text/plain": [ "" @@ -10963,298 +12891,2671 @@ { "data": { "text/html": [ - "
TWV4TLTLTW
DLO1DWDWK5DLG2
DLL1H4I1DLR1
TWTLU1DWI1N1E1
DLT1DLDLC3DLA1
DWI1TLC3A1I1R1D2S1
TLI1N1DLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
DLI1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLU1DLE1D2
DWD2TLI1T1A1
N1E1A1T1N1E1sS1DLW4
TWA1L1O1T1A1H4K5
DLR1DLI1DLDL
DLT1DWtDL
H4TLY4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 0 with rack VEXEPIL makes Play(start=230, dir=1, letters='PIXIE', rack='VEL')
for 48 points ; draws: VELUCUI; scores: [229, 212]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLU1DLE1D2
DWD2TLI1T1A1
N1E1A1T1N1E1sS1DLW4
TWA1L1O1T1A1H4K5
DLR1DLP3I1X8I1E1DL
DLT1DWtDL
H4TLY4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 1 with rack VINESTI makes Play(start=165, dir=1, letters='SNED', rack='VIETI')
for 22 points ; draws: VIETIAA; scores: [229, 234]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLU1DLS1N1E1D2
DWD2TLI1T1A1
N1E1A1T1N1E1sS1DLW4
TWA1L1O1T1A1H4K5
DLR1DLP3I1X8I1E1DL
DLT1DWtDL
H4TLY4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 0 with rack VELUCUI makes Play(start=205, dir=1, letters='UVEA', rack='LCUI')
for 23 points ; draws: LCUIEIF; scores: [252, 234]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLU1DLS1N1E1D2
DWD2TLI1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1L1O1T1A1H4K5
DLR1DLP3I1X8I1E1DL
DLT1DWtDL
H4TLY4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 1 with rack VIETIAA makes Play(start=159, dir=17, letters='VITIATE', rack='A')
for 24 points ; draws: AZEOIMG; scores: [252, 258]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1tDL
H4E1TLY4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", " 'V',\n", " '.',\n", - " ';',\n", " '.',\n", - " ';',\n", " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", " '.',\n", " '=',\n", " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", " 'O',\n", - " '-',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", " '.',\n", " '.',\n", - " '.',\n", - " '-',\n", " 'K',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'L',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'U',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", " ':',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", " '.',\n", " '.',\n", - " 'I',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", - " 'Z',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", " 'P',\n", " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", + " ':',\n", + " 'T',\n", " '.',\n", " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", " '.',\n", " '.',\n", " '.',\n", - " '=',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", " 'E',\n", + " '∴',\n", " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", + " 'Y',\n", + " 'I',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -11263,7 +15564,7 @@ { "data": { "text/html": [ - "Player 0 with rack QBMNOVS makes Play(start=239, dir=1, letters='MOBS', rack='QNV')
for 29 points; draws: QNV; scores: [315, 327]" + "Player 0 with rack LCUIEIF makes Play(start=245, dir=17, letters='IF', rack='LCUEI')
for 28 points ; draws: LCUEIGD; scores: [280, 258]" ], "text/plain": [ "" @@ -11275,298 +15576,523 @@ { "data": { "text/html": [ - "
TWV4TLTLTW
DLO1DWDWK5DLG2
DLL1H4I1DLR1
TWTLU1DWI1N1E1
DLT1DLDLC3DLA1
DWI1TLC3A1I1R1D2S1
TLI1N1DLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
M3O1B3S1I1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLDWQ10R1
DLDLDLU1DLO1
DWTLTLE1O1M3
TLDLDLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", " '.',\n", " '.',\n", " '.',\n", " '=',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", " 'V',\n", " '.',\n", - " ';',\n", " '.',\n", - " ';',\n", " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", " '.',\n", " '=',\n", " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", " 'O',\n", - " '-',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", " '.',\n", " '.',\n", - " '.',\n", - " '-',\n", " 'K',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'L',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'U',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", " ':',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", " '.',\n", " '.',\n", - " 'I',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", - " 'Z',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", " 'P',\n", " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", - " '#',\n", - " '#',\n", - " 'M',\n", - " 'O',\n", - " 'B',\n", - " 'S',\n", " '.',\n", - " 'I',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " 'T',\n", - " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", + " 'H',\n", " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", " 'E',\n", + " 'F',\n", " '.',\n", - " 'S',\n", - " 'O',\n", - " 'A',\n", + " 'Y',\n", + " 'I',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -11575,7 +16101,7 @@ { "data": { "text/html": [ - "Player 1 with rack _UWEARW makes Play(start=21, dir=1, letters='AVoWER', rack='UW')
for 63 points; draws: UW; scores: [315, 390]" + "Player 1 with rack AZEOIMG makes Play(start=76, dir=17, letters='GAZEBO', rack='IM')
for 36 points ; draws: IMGRORY; scores: [280, 294]" ], "text/plain": [ "" @@ -11587,298 +16113,523 @@ { "data": { "text/html": [ - "
A1V4oW4E1R1TW
DLO1DWDWK5DLG2
DLL1H4I1DLR1
TWTLU1DWI1N1E1
DLT1DLDLC3DLA1
DWI1TLC3A1I1R1D2S1
TLI1N1DLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
M3O1B3S1I1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLG2Q10R1
DLDLA1DLU1DLO1
DWTLZ10TLE1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " 'A',\n", - " 'V',\n", - " 'o',\n", - " 'W',\n", - " 'E',\n", - " 'R',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '=',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", - " 'O',\n", - " '-',\n", " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " 'K',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'L',\n", " '.',\n", " '.',\n", " '.',\n", + " 'Q',\n", " '.',\n", " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'A',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", - " 'U',\n", " '.',\n", + " '∴',\n", " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", " 'Z',\n", " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", + " '∴',\n", " '.',\n", " 'E',\n", + " '.',\n", " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", " '.',\n", " '.',\n", " ':',\n", + " 'V',\n", " '.',\n", - " '#',\n", - " '#',\n", - " 'M',\n", " 'O',\n", - " 'B',\n", + " '.',\n", + " 'U',\n", + " ':',\n", " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", " '.',\n", " 'I',\n", " '.',\n", " '.',\n", " '.',\n", " 'T',\n", - " 'O',\n", " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", + " 'N',\n", " 'E',\n", - " '.',\n", - " 'S',\n", - " 'O',\n", " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -11887,7 +16638,7 @@ { "data": { "text/html": [ - "Player 0 with rack QNV makes Play(start=39, dir=1, letters='ON', rack='QV')
for 6 points; draws: QV; scores: [321, 390]" + "Player 0 with rack LCUEIGD makes Play(start=110, dir=1, letters='ZIG', rack='LCUED')
for 17 points ; draws: LCUEDEA; scores: [297, 294]" ], "text/plain": [ "" @@ -11899,298 +16650,523 @@ { "data": { "text/html": [ - "
A1V4oW4E1R1TW
DLO1N1DWK5DLG2
DLL1H4I1DLR1
TWTLU1DWI1N1E1
DLT1DLDLC3DLA1
DWI1TLC3A1I1R1D2S1
TLI1N1DLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
M3O1B3S1I1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLG2Q10R1
DLDLA1DLU1DLO1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " 'A',\n", - " 'V',\n", - " 'o',\n", - " 'W',\n", - " 'E',\n", - " 'R',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '=',\n", " '.',\n", " '.',\n", " ':',\n", " '.',\n", - " 'O',\n", - " 'N',\n", " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " 'K',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'L',\n", " '.',\n", " '.',\n", " '.',\n", + " 'Q',\n", " '.',\n", " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'A',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", - " 'U',\n", " '.',\n", + " '∴',\n", " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", " 'Z',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", " 'I',\n", - " 'l',\n", + " 'G',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'M',\n", " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", " 'S',\n", " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", " '.',\n", " 'T',\n", - " 'O',\n", " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", + " 'N',\n", " 'E',\n", - " '.',\n", - " 'S',\n", - " 'O',\n", " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -12199,7 +17175,7 @@ { "data": { "text/html": [ - "Player 1 with rack UW makes Play(start=38, dir=1, letters='WON', rack='U')
for 11 points; draws: U; scores: [321, 401]" + "Player 1 with rack IMGRORY makes Play(start=92, dir=1, letters='YAM', rack='IGROR')
for 22 points ; draws: IGRORNJ; scores: [297, 316]" ], "text/plain": [ "" @@ -12211,298 +17187,523 @@ { "data": { "text/html": [ - "
A1V4oW4E1R1TW
DLW4O1N1DWK5DLG2
DLL1H4I1DLR1
TWTLU1DWI1N1E1
DLT1DLDLC3DLA1
DWI1TLC3A1I1R1D2S1
TLI1N1DLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
M3O1B3S1I1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWTLTLTW
DLDWDWDL
DLDLDLDLB3
TWTLG2Q10R1
DLY4A1M3U1DLO1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " 'A',\n", - " 'V',\n", - " 'o',\n", - " 'W',\n", - " 'E',\n", - " 'R',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '=',\n", " '.',\n", " '.',\n", " ':',\n", - " 'W',\n", - " 'O',\n", - " 'N',\n", " '.',\n", " '.',\n", - " '.',\n", - " '-',\n", - " 'K',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'L',\n", " '.',\n", " '.',\n", " '.',\n", + " 'Q',\n", " '.',\n", " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", " 'R',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", " '=',\n", " '.',\n", " '.',\n", - " ';',\n", - " 'U',\n", " '.',\n", + " '∴',\n", " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", - " ':',\n", " 'Z',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", " 'I',\n", - " 'l',\n", + " 'G',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'M',\n", " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", " 'S',\n", " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", " '.',\n", " 'T',\n", - " 'O',\n", " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", + " 'N',\n", " 'E',\n", - " '.',\n", - " 'S',\n", - " 'O',\n", " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -12511,7 +17712,7 @@ { "data": { "text/html": [ - "Player 0 with rack QV makes Play(start=0, dir=1, letters='', rack='QV')
for 0 points; draws: QV; scores: [321, 401]" + "Player 0 with rack LCUEDEA makes Play(start=24, dir=17, letters='DECAY', rack='LUE')
for 18 points ; draws: LUETSAW; scores: [315, 316]" ], "text/plain": [ "" @@ -12523,298 +17724,523 @@ { "data": { "text/html": [ - "
A1V4oW4E1R1TW
DLW4O1N1DWK5DLG2
DLL1H4I1DLR1
TWTLU1DWI1N1E1
DLT1DLDLC3DLA1
DWI1TLC3A1I1R1D2S1
TLI1N1DLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1DLN1F4A1X8DL
M3O1B3S1I1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWD2TLTW
DLDWE1DWDL
DLDLC3DLDLB3
TWTLA1G2Q10R1
DLY4A1M3U1DLO1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " 'A',\n", - " 'V',\n", - " 'o',\n", - " 'W',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '=',\n", " 'E',\n", - " 'R',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'W',\n", - " 'O',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " 'K',\n", - " '.',\n", " ':',\n", " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '█',\n", + " '█',\n", " '.',\n", " ':',\n", " '.',\n", " '.',\n", - " 'L',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'U',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", " '.',\n", " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", " '.',\n", " '.',\n", " '.',\n", " ':',\n", - " 'D',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'J',\n", - " '.',\n", - " 'O',\n", - " '.',\n", " '.',\n", " '.',\n", + " ':',\n", " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " '.',\n", " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", " ':',\n", " '.',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", " 'O',\n", + " '█',\n", + " '█',\n", " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", + " '=',\n", " '.',\n", - " '#',\n", - " '#',\n", " '.',\n", - " 'L',\n", - " ':',\n", + " '.',\n", + " '∴',\n", + " '.',\n", " 'Z',\n", - " '.',\n", - " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'G',\n", - " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", " 'I',\n", - " 'l',\n", + " 'G',\n", + " '.',\n", " 'E',\n", - " '#',\n", - " '#',\n", " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " ':',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", - " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'M',\n", " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", " 'S',\n", " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'I',\n", " '.',\n", " '.',\n", " '.',\n", " 'T',\n", - " 'O',\n", " 'A',\n", - " 'D',\n", - " 'Y',\n", - " '.',\n", - " '#',\n", - " '#',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", - " '.',\n", - " '=',\n", - " '.',\n", - " 'A',\n", - " 'G',\n", - " 'A',\n", - " 'P',\n", + " 'N',\n", " 'E',\n", - " '.',\n", - " 'S',\n", - " 'O',\n", " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -12823,7 +18249,7 @@ { "data": { "text/html": [ - "Player 1 with rack U makes Play(start=225, dir=1, letters='RUN', rack='')
for 7 points; draws: ; scores: [321, 408]" + "Player 1 with rack IGRORNJ makes Play(start=40, dir=1, letters='REJOIN', rack='GR')
for 52 points ; draws: GRNPFEC; scores: [315, 368]" ], "text/plain": [ "" @@ -12835,298 +18261,4282 @@ { "data": { "text/html": [ - "
A1V4oW4E1R1TW
DLW4O1N1DWK5DLG2
DLL1H4I1DLR1
TWTLU1DWI1N1E1
DLT1DLDLC3DLA1
DWI1TLC3A1I1R1D2S1
TLI1N1DLD2E1
J8O1B3U1T1T1E1
H4E1D2DLI1DLN1TL
E1L1I1T1O1F4E1T1U1S1
L1DLZ10A1DLM3DLDL
G2Y4R1E1N1E1E1O1L1O1P3I1lE1
DLR1U1N1F4A1X8DL
M3O1B3S1I1T1O1A1D2Y4
TWA1G2A1P3E1S1O1A1R1
" + "
TWD2TLTW
DLR1E1J8O1I1N1DL
DLDLC3DLDLB3
TWTLA1G2Q10R1
DLY4A1M3U1DLO1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" ], "text/plain": [ - "['#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", - " 'A',\n", - " 'V',\n", - " 'o',\n", - " 'W',\n", - " 'E',\n", - " 'R',\n", + " '≡',\n", " '.',\n", " '.',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " 'W',\n", - " 'O',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " 'K',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'G',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'L',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'H',\n", - " 'I',\n", - " '.',\n", - " ':',\n", - " 'R',\n", - " '#',\n", - " '#',\n", - " '=',\n", - " '.',\n", - " '.',\n", - " ';',\n", - " 'U',\n", - " '.',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " ':',\n", - " '.',\n", - " 'A',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " '-',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'C',\n", - " 'A',\n", - " 'I',\n", - " 'R',\n", - " 'D',\n", - " 'S',\n", - " '#',\n", - " '#',\n", - " ';',\n", - " '.',\n", - " '.',\n", - " 'I',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", " 'D',\n", " '.',\n", + " '∴',\n", " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", " 'J',\n", - " '.',\n", " 'O',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " 'B',\n", - " 'U',\n", - " 'T',\n", - " 'T',\n", - " 'E',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " 'H',\n", - " 'E',\n", - " '.',\n", - " 'D',\n", - " ':',\n", - " '.',\n", - " '.',\n", " 'I',\n", - " '.',\n", - " '.',\n", - " ':',\n", " 'N',\n", " '.',\n", - " '.',\n", - " ';',\n", - " '#',\n", - " '#',\n", - " 'E',\n", - " 'L',\n", - " '.',\n", - " 'I',\n", - " '.',\n", - " 'T',\n", - " '.',\n", - " 'O',\n", - " '.',\n", - " 'F',\n", - " 'E',\n", - " 'T',\n", - " 'U',\n", - " 'S',\n", - " '.',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " 'L',\n", " ':',\n", - " 'Z',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", " '.',\n", " 'A',\n", - " ':',\n", - " 'M',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '.',\n", - " '#',\n", - " '#',\n", " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", " 'Y',\n", - " 'R',\n", - " 'E',\n", - " 'N',\n", - " 'E',\n", - " '.',\n", - " 'E',\n", - " 'O',\n", - " 'L',\n", - " 'O',\n", - " 'P',\n", - " 'I',\n", - " 'l',\n", - " 'E',\n", - " '#',\n", - " '#',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " 'R',\n", - " 'U',\n", - " 'N',\n", - " '.',\n", - " '.',\n", - " 'F',\n", " 'A',\n", - " 'X',\n", - " '.',\n", - " '.',\n", - " ':',\n", - " '.',\n", - " '#',\n", - " '#',\n", " 'M',\n", - " 'O',\n", - " 'B',\n", - " 'S',\n", " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", " 'I',\n", + " 'G',\n", " '.',\n", + " 'E',\n", " '.',\n", - " '.',\n", - " 'T',\n", " 'O',\n", - " 'A',\n", - " 'D',\n", - " 'Y',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", " '.',\n", - " '#',\n", - " '#',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", " '.',\n", " '.',\n", " '.',\n", " '=',\n", " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 0 with rack LUETSAW makes Play(start=26, dir=1, letters='WAES', rack='LUT')
for 62 points ; draws: LUTA; scores: [377, 368]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWD2W4A1E1S1
DLR1E1J8O1I1N1DL
DLDLC3DLDLB3
TWTLA1G2Q10R1
DLY4A1M3U1DLO1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'W',\n", + " 'A',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " 'E',\n", + " 'J',\n", + " 'O',\n", + " 'I',\n", + " 'N',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", " 'A',\n", " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", " 'A',\n", - " 'P',\n", + " 'M',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", + " 'I',\n", + " 'G',\n", + " '.',\n", " 'E',\n", " '.',\n", - " 'S',\n", " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", " 'R',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#',\n", - " '#']" + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 1 with rack GRNPFEC makes Play(start=60, dir=1, letters='ENG', rack='RPFC')
for 21 points ; draws: RPFC; scores: [377, 389]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWD2W4A1E1S1
DLR1E1J8O1I1N1DL
DLDLC3E1N1G2DLB3
TWTLA1G2Q10R1
DLY4A1M3U1DLO1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
DWD2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'W',\n", + " 'A',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " 'E',\n", + " 'J',\n", + " 'O',\n", + " 'I',\n", + " 'N',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " 'E',\n", + " 'N',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", + " 'I',\n", + " 'G',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 0 with rack LUTA makes Play(start=172, dir=1, letters='TAD', rack='LU')
for 11 points ; draws: LU; scores: [388, 389]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWD2W4A1E1S1
DLR1E1J8O1I1N1DL
DLDLC3E1N1G2DLB3
TWTLA1G2Q10R1
DLY4A1M3U1DLO1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
T1A1D2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'W',\n", + " 'A',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " 'E',\n", + " 'J',\n", + " 'O',\n", + " 'I',\n", + " 'N',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " 'E',\n", + " 'N',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", + " 'I',\n", + " 'G',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 1 with rack RPFC makes Play(start=96, dir=1, letters='CUP', rack='RF')
for 10 points ; draws: RF; scores: [388, 399]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWD2W4A1E1S1
DLR1E1J8O1I1N1DL
DLDLC3E1N1G2DLB3
TWTLA1G2Q10R1
DLY4A1M3C3U1P3O1
DWTLZ10I1G2E1O1M3
TLDLE1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
T1A1D2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'W',\n", + " 'A',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " 'E',\n", + " 'J',\n", + " 'O',\n", + " 'I',\n", + " 'N',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " 'E',\n", + " 'N',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " 'C',\n", + " 'U',\n", + " 'P',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", + " 'I',\n", + " 'G',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 0 with rack LU makes Play(start=127, dir=1, letters='EL', rack='U')
for 8 points ; draws: U; scores: [396, 399]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWD2W4A1E1S1
DLR1E1J8O1I1N1DL
DLDLC3E1N1G2DLB3
TWTLA1G2Q10R1
DLY4A1M3C3U1P3O1
DWTLZ10I1G2E1O1M3
TLDLE1L1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
T1A1D2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tDL
H4E1F4Y4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'W',\n", + " 'A',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " 'E',\n", + " 'J',\n", + " 'O',\n", + " 'I',\n", + " 'N',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " 'E',\n", + " 'N',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " 'C',\n", + " 'U',\n", + " 'P',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", + " 'I',\n", + " 'G',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'L',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 1 with rack RF makes Play(start=234, dir=17, letters='EF', rack='R')
for 9 points ; draws: R; scores: [396, 408]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWD2W4A1E1S1
DLR1E1J8O1I1N1DL
DLDLC3E1N1G2DLB3
TWTLA1G2Q10R1
DLY4A1M3C3U1P3O1
DWTLZ10I1G2E1O1M3
TLDLE1L1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
T1A1D2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tF4
H4E1F4Y4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'W',\n", + " 'A',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " 'E',\n", + " 'J',\n", + " 'O',\n", + " 'I',\n", + " 'N',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " 'E',\n", + " 'N',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " 'C',\n", + " 'U',\n", + " 'P',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", + " 'I',\n", + " 'G',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'L',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " 'F',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Player 0 with rack U makes Play(start=258, dir=1, letters='UH', rack='')
for 5 points ; draws: ; scores: [401, 408]" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
TWD2W4A1E1S1
DLR1E1J8O1I1N1DL
DLDLC3E1N1G2DLB3
TWTLA1G2Q10R1
DLY4A1M3C3U1P3O1
DWTLZ10I1G2E1O1M3
TLDLE1L1DLL1N1O1
DWB3O1O1D2L1E1S1
TLDLV4O1U1DLS1N1E1D2
T1A1D2I1I1T1A1
N1E1A1T1N1E1sS1DLW4
U1V4E1A1I1L1O1T1A1H4K5
DLR1DLA1P3I1X8I1E1DL
DLT1T1I1tF4
U1H4E1F4Y4I1R1R1
" + ], + "text/plain": [ + "['█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " 'D',\n", + " '.',\n", + " 'W',\n", + " 'A',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " 'E',\n", + " 'J',\n", + " 'O',\n", + " 'I',\n", + " 'N',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'C',\n", + " '.',\n", + " 'E',\n", + " 'N',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'B',\n", + " '█',\n", + " '█',\n", + " '≡',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " 'A',\n", + " 'G',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Q',\n", + " '.',\n", + " '.',\n", + " 'R',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'Y',\n", + " 'A',\n", + " 'M',\n", + " '.',\n", + " 'C',\n", + " 'U',\n", + " 'P',\n", + " '.',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '∴',\n", + " '.',\n", + " 'Z',\n", + " 'I',\n", + " 'G',\n", + " '.',\n", + " 'E',\n", + " '.',\n", + " 'O',\n", + " 'M',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " '.',\n", + " 'E',\n", + " 'L',\n", + " '.',\n", + " ':',\n", + " 'L',\n", + " '.',\n", + " 'N',\n", + " 'O',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '=',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'B',\n", + " 'O',\n", + " 'O',\n", + " 'D',\n", + " 'L',\n", + " 'E',\n", + " 'S',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '∴',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'V',\n", + " '.',\n", + " 'O',\n", + " '.',\n", + " 'U',\n", + " ':',\n", + " 'S',\n", + " 'N',\n", + " 'E',\n", + " 'D',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " 'D',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " 'T',\n", + " 'A',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'N',\n", + " 'E',\n", + " 'A',\n", + " 'T',\n", + " 'N',\n", + " 'E',\n", + " 's',\n", + " 'S',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'W',\n", + " '█',\n", + " '█',\n", + " 'U',\n", + " 'V',\n", + " 'E',\n", + " 'A',\n", + " '.',\n", + " 'I',\n", + " '.',\n", + " 'L',\n", + " 'O',\n", + " 'T',\n", + " 'A',\n", + " 'H',\n", + " '.',\n", + " '.',\n", + " 'K',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " ':',\n", + " '.',\n", + " 'R',\n", + " ':',\n", + " 'A',\n", + " '.',\n", + " '.',\n", + " 'P',\n", + " 'I',\n", + " 'X',\n", + " 'I',\n", + " 'E',\n", + " ':',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " ':',\n", + " 'T',\n", + " '.',\n", + " 'T',\n", + " 'I',\n", + " '.',\n", + " '.',\n", + " 't',\n", + " '.',\n", + " '.',\n", + " 'F',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '.',\n", + " '.',\n", + " 'U',\n", + " 'H',\n", + " '.',\n", + " 'E',\n", + " 'F',\n", + " '.',\n", + " 'Y',\n", + " 'I',\n", + " 'R',\n", + " 'R',\n", + " '.',\n", + " '.',\n", + " '.',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█',\n", + " '█']" ] }, "metadata": {}, @@ -13135,10 +22545,10 @@ { "data": { "text/plain": [ - "[307, 422]" + "[402, 407]" ] }, - "execution_count": 63, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -13158,16 +22568,12 @@ } }, "source": [ - "That was an exciting game, ranging to the four edges of the board, with three bingos: INCIDENT,\n", - "EOLOPILE and \n", - "VOLUTIN (yes, those are actual words). \n", - "\n", - "But that was just one game; Let's get statistics for both players over, say, 10 games:" + "That was an exciting high-scoring game, but it was just one game. Let's get statistics for both players over, say, 10 games:" ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 60, "metadata": { "button": false, "collapsed": false, @@ -13182,9 +22588,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "min: 278, median: 389, mean: 378.15, max: 447\n", - "CPU times: user 26.7 s, sys: 313 ms, total: 27 s\n", - "Wall time: 29.1 s\n" + "min: 307, median: 373.5, mean: 382.8, max: 459\n", + "CPU times: user 33.2 s, sys: 324 ms, total: 33.5 s\n", + "Wall time: 36.2 s\n" ] } ], @@ -13193,11 +22599,11 @@ "\n", "games = 10\n", "\n", - "scores = sorted(score for game in range(games) \n", - " for score in play_game(verbose=False))\n", + "scores = [score for game in range(games) \n", + " for score in play_game(verbose=False)]\n", "\n", "print('min: {}, median: {}, mean: {}, max: {}'.format(\n", - " min(scores), scores[games], sum(scores)/(2*games), max(scores)))" + " min(scores), median(scores), mean(scores), max(scores)))" ] }, { @@ -13218,7 +22624,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 61, "metadata": { "button": false, "collapsed": false, @@ -13235,7 +22641,7 @@ "'ok'" ] }, - "execution_count": 65, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -13258,10 +22664,16 @@ " assert dict_prefixes({'HELLO', 'HELP', 'HELPER'}) == {\n", " '', 'H', 'HE', 'HEL', 'HELL', 'HELP', 'HELPE'}\n", " \n", - " assert rack_prefixes('ABC') == {'', 'A', 'AB', 'AC', 'B', 'BA', 'BAC', 'C', 'CA', 'CAB'}\n", + " assert set(rack_prefixes('ABC')) == {'', 'C', 'B', 'A', 'AB', 'CA', 'AC', 'BA', 'BAC', 'CAB'}\n", " assert len(rack_prefixes('LETTERS')) == 155\n", " assert len(rack_prefixes('LETTER_')) == 1590\n", " \n", + " assert remove('SET', 'EELRTTS') == 'ELRT'\n", + " remove('TREaT', 'EELRTT_') == 'EL'\n", + " \n", + " assert len(WWF) == len(SCRABBLE) == 17 * 17\n", + " assert all(sq in EMPTY or sq == OFF for sq in WWF + SCRABBLE)\n", + " \n", " DOWN = WWF.down\n", " plays = {\n", " Play(145, DOWN, 'ENTER', ''),\n", @@ -13270,7 +22682,6 @@ " Play(158, DOWN, 'MUSES', ''),\n", " Play(172, ACROSS, 'VIRULeNT', ''),\n", " Play(213, ACROSS, 'RED', ''),\n", - " Play(198, ACROSS, 'LYTHE', ''),\n", " Play(147, DOWN, 'CHILDREN', ''),\n", " Play(164, ACROSS, 'HEARD', ''),\n", " Play(117, DOWN, 'BRIDLES', ''),\n", @@ -13283,9 +22694,11 @@ " assert len(WWF) == len(board) == 17 * 17\n", " assert all_anchors(WWF) == [144]\n", " assert all_anchors(board) == [\n", - " 100, 114, 115, 116, 121, 127, 128, 130, 137, 139, 141, 143, 146, 148, 149, 150, 154, 156, 157, 159, 160, \n", - " 161, 163, 171, 180, 182, 183, 184, 188, 190, 191, 193, 194, 195, 197, 206, 208, 210, 212, 216, 217, 218, \n", - " 225, 227, 230, 231, 233, 236, 243, 248, 250, 265, 267]\n", + " 100, 114, 115, 116, 121, 127, 128, 130, 137, 139, 141, 143, \n", + " 146, 148, 149, 150, 154, 156, 157, 159, 160, 161, 163, 171, \n", + " 180, 182, 183, 184, 188, 190, 191, 193, 194, 195, 197, 199, \n", + " 201, 206, 208, 210, 212, 216, 218, 225, 227, 230, 231, 233, \n", + " 236, 243, 248, 250, 265, 267]\n", " \n", " assert crossword(board, 141, ACROSS) == '.MUSES'\n", " assert crossword(board, 148, ACROSS) == 'T.E'\n", @@ -13340,7 +22753,7 @@ "1. **Is the code easy to follow?** \n", " - I'm biased, but I think this code is easy to understand, test, and modify.\n", "2. **Does the strategy score well?** \n", - " - Yes: the mean and median are both well over 350, which is enough for [the elite club](https://www.facebook.com/WWF350Club) of high scorers. \n", + " - Yes: the mean and median scores are both over 350, which is enough for [the elite club](https://www.facebook.com/WWF350Club) of high scorers. \n", " - No: this is not quite world-champion caliber.\n", "3. **Is the code fast enough?** \n", " - It takes less than 3 seconds to play a complete game for both players; that's fast enough for me. If desired, the code could be made about 100 times faster, by using multiprocessing, by caching more information, by not building explicit lists for intermediate results (although those intermediate results make the code easier to test), by using PyPy or Cython, or by porting to another language.\n", @@ -13348,12 +22761,11 @@ " - We could give players the option of trading in tiles.\n", " - We could explore better strategies. A better strategy might:\n", " - Plan ahead to use high-scoring letters only with bonuses.\n", - " - Manage letters to increase the chance of a bingo.\n", " - Use blank tiles strategically, not greedily.\n", + " - Manage letters to increase the chance of a bingo.\n", " - Play defensively to avoid giving the opponent good chances at high scores.\n", " - Think ahead in the end game to go out before the opponent (or at least avoid being stuck with high-scoring letters in the rack).\n", " - In the end game, know which tiles have not been played and thus which ones the opponent could have.\n", - " - The display could be prettier.\n", " - The game could be interfaced to an online game server.\n", " - More complete unit tests would be great.\n", " - We could compare this program to those of the [giants](https://www.cs.cmu.edu/afs/cs/academic/class/15451-s06/www/lectures/scrabble.pdf) whose [shoulders](http://ericsink.com/downloads/faster-scrabble-gordon.pdf) we [stood](http://web.archive.org/web/20040116175427/http://www.math-info.univ-paris5.fr/~bouzy/ProjetUE3/Scrabble.pdf) [upon](http://www.gtoal.com/wordgames/scrabble.html).\n",