diff --git a/README.md b/README.md index f81e8d5..bcebb3e 100644 --- a/README.md +++ b/README.md @@ -57,342 +57,329 @@ To use the script to solve a particular Boggle board configuration, you'll need ``` # Usage +### CLI usage ```console -$ python boggler.py -Usage: python3 boggler.py [MAX_WORD_LENGTH] -$ python boggler.py board.csv wordlists/ 15 -Reading in wordlists... ->> d: words_d.txt ->> e: words_e.txt ->> f: words_f.txt ->> m: words_m.txt ->> n: words_n.txt ->> o: words_o.txt ->> qu: words_q.txt ->> r: words_r.txt ->> s: words_s.txt ->> v: words_v.txt ->> y: words_y.txt -Generating WordTrees... ->> (0, 0): y ->> (0, 1): e ->> (0, 2): o ->> (0, 3): s ->> (1, 0): r ->> (1, 1): e ->> (1, 2): o ->> (1, 3): v ->> (2, 0): d ->> (2, 1): f ->> (2, 2): e ->> (2, 3): y ->> (3, 0): n ->> (3, 1): m ->> (3, 2): e ->> (3, 3): qu +$ poetry run boggler --help +usage: boggler [-h] [-f FORMAT] [-p] [-s] [-d] board wordlists [max_word_length] + +Boggle board game solver + +positional arguments: + board Path to board CSV file + wordlists Path to directory of wordlist files. The directory must contain text files of the form words_X.txt where "X" is a character of the + alphabet + max_word_length Maximum length of words searched for on provided board + +options: + -h, --help show this help message and exit + -f FORMAT, --format FORMAT + Specify alternative output format including [txt, json] + -p, --include-path Include full paths for each word in output + -s, --sort Sort output alphabetically. By default the results are sorted by the starting block position on the board from top-to-bottom, left- + to-right as given in the board file. + -d, --dedup Remove duplicates from word-only output. Note that de-duplication does not preserve the original order of the output, so it is + recommended to also use the sort option when de-duplicating. +``` + +### Example +```console +$ poetry run boggler ./boggler/boards/b1.csv boggler/wordlists/scrabble_2019/ BOARD +---------------+ -| Y | E | O | S | +| S | A | I | P | +---------------+ -| R | E | O | V | +| L |QU | A | Y | +---------------+ -| D | F | E | Y | +| U | L | L | S | +---------------+ -| N | M | E |QU | +| O | W | H | A | +---------------+ - -Starting @ (0, 0)... -y : [(0, 0)] -yr : [(0, 0), (1, 0)] -ye : [(0, 0), (1, 1)] -yee : [(0, 0), (1, 1), (0, 1)] -yeo : [(0, 0), (1, 1), (0, 2)] -yed : [(0, 0), (1, 1), (2, 0)] -yee : [(0, 0), (1, 1), (2, 2)] -yer : [(0, 0), (1, 1), (1, 0)] -yere : [(0, 0), (1, 1), (1, 0), (0, 1)] -yerd : [(0, 0), (1, 1), (1, 0), (2, 0)] -yeo : [(0, 0), (1, 1), (1, 2)] -ye : [(0, 0), (0, 1)] -yee : [(0, 0), (0, 1), (1, 1)] -yer : [(0, 0), (0, 1), (1, 0)] -yerd : [(0, 0), (0, 1), (1, 0), (2, 0)] -yere : [(0, 0), (0, 1), (1, 0), (1, 1)] -yeo : [(0, 0), (0, 1), (1, 2)] -yeo : [(0, 0), (0, 1), (0, 2)] - -Starting @ (0, 1)... -e : [(0, 1)] -ee : [(0, 1), (1, 1)] -eer : [(0, 1), (1, 1), (1, 0)] -eery : [(0, 1), (1, 1), (1, 0), (0, 0)] -er : [(0, 1), (1, 0)] -erd : [(0, 1), (1, 0), (2, 0)] -erf : [(0, 1), (1, 0), (2, 1)] -ere : [(0, 1), (1, 0), (1, 1)] -eo : [(0, 1), (1, 2)] -eos : [(0, 1), (1, 2), (0, 3)] -eof : [(0, 1), (1, 2), (2, 1)] -ey : [(0, 1), (0, 0)] -eyr : [(0, 1), (0, 0), (1, 0)] -eyre : [(0, 1), (0, 0), (1, 0), (1, 1)] -eye : [(0, 1), (0, 0), (1, 1)] -eyed : [(0, 1), (0, 0), (1, 1), (2, 0)] -eyer : [(0, 1), (0, 0), (1, 1), (1, 0)] -eo : [(0, 1), (0, 2)] -eos : [(0, 1), (0, 2), (0, 3)] - -Starting @ (0, 2)... -o : [(0, 2)] -oos : [(0, 2), (1, 2), (0, 3)] -oof : [(0, 2), (1, 2), (2, 1)] -oe : [(0, 2), (1, 1)] -oer : [(0, 2), (1, 1), (1, 0)] -ovey : [(0, 2), (1, 3), (2, 2), (2, 3)] -oe : [(0, 2), (0, 1)] -oer : [(0, 2), (0, 1), (1, 0)] -os : [(0, 2), (0, 3)] - -Starting @ (0, 3)... -s : [(0, 3)] -sv : [(0, 3), (1, 3)] -so : [(0, 3), (1, 2)] -sooey : [(0, 3), (1, 2), (0, 2), (1, 1), (0, 0)] -sooey : [(0, 3), (1, 2), (0, 2), (0, 1), (0, 0)] -soe : [(0, 3), (1, 2), (0, 1)] -soe : [(0, 3), (1, 2), (2, 2)] -sofer : [(0, 3), (1, 2), (2, 1), (1, 1), (1, 0)] -soy : [(0, 3), (1, 2), (2, 3)] -soe : [(0, 3), (1, 2), (1, 1)] -sov : [(0, 3), (1, 2), (1, 3)] -so : [(0, 3), (0, 2)] -sooey : [(0, 3), (0, 2), (1, 2), (0, 1), (0, 0)] -sooey : [(0, 3), (0, 2), (1, 2), (2, 2), (2, 3)] -sooey : [(0, 3), (0, 2), (1, 2), (1, 1), (0, 0)] -soe : [(0, 3), (0, 2), (1, 1)] -sov : [(0, 3), (0, 2), (1, 3)] -soe : [(0, 3), (0, 2), (0, 1)] - -Starting @ (1, 0)... -r : [(1, 0)] -rye : [(1, 0), (0, 0), (1, 1)] -rye : [(1, 0), (0, 0), (0, 1)] -re : [(1, 0), (0, 1)] -ree : [(1, 0), (0, 1), (1, 1)] -reef : [(1, 0), (0, 1), (1, 1), (2, 1)] -reed : [(1, 0), (0, 1), (1, 1), (2, 0)] -rd : [(1, 0), (2, 0)] -rf : [(1, 0), (2, 1)] -re : [(1, 0), (1, 1)] -ree : [(1, 0), (1, 1), (0, 1)] -ref : [(1, 0), (1, 1), (2, 1)] -red : [(1, 0), (1, 1), (2, 0)] -ree : [(1, 0), (1, 1), (2, 2)] -reem : [(1, 0), (1, 1), (2, 2), (3, 1)] -reef : [(1, 0), (1, 1), (2, 2), (2, 1)] - -Starting @ (1, 1)... -e : [(1, 1)] -ee : [(1, 1), (0, 1)] -eer : [(1, 1), (0, 1), (1, 0)] -eery : [(1, 1), (0, 1), (1, 0), (0, 0)] -ey : [(1, 1), (0, 0)] -eyr : [(1, 1), (0, 0), (1, 0)] -eyre : [(1, 1), (0, 0), (1, 0), (0, 1)] -eye : [(1, 1), (0, 0), (0, 1)] -eyer : [(1, 1), (0, 0), (0, 1), (1, 0)] -eo : [(1, 1), (0, 2)] -eos : [(1, 1), (0, 2), (0, 3)] -ef : [(1, 1), (2, 1)] -ed : [(1, 1), (2, 0)] -ee : [(1, 1), (2, 2)] -er : [(1, 1), (1, 0)] -ere : [(1, 1), (1, 0), (0, 1)] -erd : [(1, 1), (1, 0), (2, 0)] -erf : [(1, 1), (1, 0), (2, 1)] -eo : [(1, 1), (1, 2)] -eos : [(1, 1), (1, 2), (0, 3)] -eof : [(1, 1), (1, 2), (2, 1)] - -Starting @ (1, 2)... -o : [(1, 2)] -oos : [(1, 2), (0, 2), (0, 3)] -oe : [(1, 2), (0, 1)] -oer : [(1, 2), (0, 1), (1, 0)] -os : [(1, 2), (0, 3)] -oe : [(1, 2), (2, 2)] -of : [(1, 2), (2, 1)] -ofer : [(1, 2), (2, 1), (1, 1), (1, 0)] -oy : [(1, 2), (2, 3)] -oe : [(1, 2), (1, 1)] -oer : [(1, 2), (1, 1), (1, 0)] -ovey : [(1, 2), (1, 3), (2, 2), (2, 3)] - -Starting @ (1, 3)... -v : [(1, 3)] -vs : [(1, 3), (0, 3)] -vo : [(1, 3), (0, 2)] -voe : [(1, 3), (0, 2), (1, 1)] -voe : [(1, 3), (0, 2), (0, 1)] -vee : [(1, 3), (2, 2), (1, 1)] -veer : [(1, 3), (2, 2), (1, 1), (1, 0)] -veery : [(1, 3), (2, 2), (1, 1), (1, 0), (0, 0)] -vee : [(1, 3), (2, 2), (3, 2)] -vefry : [(1, 3), (2, 2), (2, 1), (1, 0), (0, 0)] -vo : [(1, 3), (1, 2)] -voe : [(1, 3), (1, 2), (0, 1)] -voe : [(1, 3), (1, 2), (2, 2)] -voe : [(1, 3), (1, 2), (1, 1)] - -Starting @ (2, 0)... -d : [(2, 0)] -dr : [(2, 0), (1, 0)] -dry : [(2, 0), (1, 0), (0, 0)] -dree : [(2, 0), (1, 0), (0, 1), (1, 1)] -drey : [(2, 0), (1, 0), (0, 1), (0, 0)] -dree : [(2, 0), (1, 0), (1, 1), (0, 1)] -drey : [(2, 0), (1, 0), (1, 1), (0, 0)] -dree : [(2, 0), (1, 0), (1, 1), (2, 2)] -de : [(2, 0), (1, 1)] -dee : [(2, 0), (1, 1), (0, 1)] -deer : [(2, 0), (1, 1), (0, 1), (1, 0)] -dey : [(2, 0), (1, 1), (0, 0)] -def : [(2, 0), (1, 1), (2, 1)] -dee : [(2, 0), (1, 1), (2, 2)] -deem : [(2, 0), (1, 1), (2, 2), (3, 1)] -der : [(2, 0), (1, 1), (1, 0)] -dere : [(2, 0), (1, 1), (1, 0), (0, 1)] -derf : [(2, 0), (1, 1), (1, 0), (2, 1)] -dn : [(2, 0), (3, 0)] -dm : [(2, 0), (3, 1)] - -Starting @ (2, 1)... -f : [(2, 1)] -fe : [(2, 1), (1, 1)] -fee : [(2, 1), (1, 1), (0, 1)] -feer : [(2, 1), (1, 1), (0, 1), (1, 0)] -fey : [(2, 1), (1, 1), (0, 0)] -feyer : [(2, 1), (1, 1), (0, 0), (0, 1), (1, 0)] -fed : [(2, 1), (1, 1), (2, 0)] -fedn : [(2, 1), (1, 1), (2, 0), (3, 0)] -fee : [(2, 1), (1, 1), (2, 2)] -fer : [(2, 1), (1, 1), (1, 0)] -fere : [(2, 1), (1, 1), (1, 0), (0, 1)] -ferd : [(2, 1), (1, 1), (1, 0), (2, 0)] -fr : [(2, 1), (1, 0)] -fry : [(2, 1), (1, 0), (0, 0)] -free : [(2, 1), (1, 0), (0, 1), (1, 1)] -freed : [(2, 1), (1, 0), (0, 1), (1, 1), (2, 0)] -frey : [(2, 1), (1, 0), (0, 1), (0, 0)] -free : [(2, 1), (1, 0), (1, 1), (0, 1)] -frey : [(2, 1), (1, 0), (1, 1), (0, 0)] -fred : [(2, 1), (1, 0), (1, 1), (2, 0)] -free : [(2, 1), (1, 0), (1, 1), (2, 2)] -fo : [(2, 1), (1, 2)] -foo : [(2, 1), (1, 2), (0, 2)] -foe : [(2, 1), (1, 2), (0, 1)] -foe : [(2, 1), (1, 2), (2, 2)] -foy : [(2, 1), (1, 2), (2, 3)] -foe : [(2, 1), (1, 2), (1, 1)] -fm : [(2, 1), (3, 1)] -fn : [(2, 1), (3, 0)] -fe : [(2, 1), (3, 2)] -fee : [(2, 1), (3, 2), (2, 2)] -fey : [(2, 1), (3, 2), (2, 3)] -fem : [(2, 1), (3, 2), (3, 1)] -feme : [(2, 1), (3, 2), (3, 1), (2, 2)] -fe : [(2, 1), (2, 2)] -fee : [(2, 1), (2, 2), (1, 1)] -feed : [(2, 1), (2, 2), (1, 1), (2, 0)] -feer : [(2, 1), (2, 2), (1, 1), (1, 0)] -feere : [(2, 1), (2, 2), (1, 1), (1, 0), (0, 1)] -fee : [(2, 1), (2, 2), (3, 2)] -fem : [(2, 1), (2, 2), (3, 1)] -feme : [(2, 1), (2, 2), (3, 1), (3, 2)] -fey : [(2, 1), (2, 2), (2, 3)] - -Starting @ (2, 2)... -e : [(2, 2)] -eo : [(2, 2), (1, 2)] -eos : [(2, 2), (1, 2), (0, 3)] -eof : [(2, 2), (1, 2), (2, 1)] -ee : [(2, 2), (1, 1)] -eer : [(2, 2), (1, 1), (1, 0)] -eery : [(2, 2), (1, 1), (1, 0), (0, 0)] -evoe : [(2, 2), (1, 3), (0, 2), (1, 1)] -evoe : [(2, 2), (1, 3), (0, 2), (0, 1)] -evoe : [(2, 2), (1, 3), (1, 2), (0, 1)] -evoe : [(2, 2), (1, 3), (1, 2), (1, 1)] -ee : [(2, 2), (3, 2)] -em : [(2, 2), (3, 1)] -emf : [(2, 2), (3, 1), (2, 1)] -eme : [(2, 2), (3, 1), (3, 2)] -ef : [(2, 2), (2, 1)] -ey : [(2, 2), (2, 3)] -eye : [(2, 2), (2, 3), (3, 2)] - -Starting @ (2, 3)... -y : [(2, 3)] -yo : [(2, 3), (1, 2)] -yoe : [(2, 3), (1, 2), (0, 1)] -yoe : [(2, 3), (1, 2), (2, 2)] -yoe : [(2, 3), (1, 2), (1, 1)] -yquem : [(2, 3), (3, 3), (2, 2), (3, 1)] -yquem : [(2, 3), (3, 3), (3, 2), (3, 1)] -ye : [(2, 3), (3, 2)] -yee : [(2, 3), (3, 2), (2, 2)] -ye : [(2, 3), (2, 2)] -yeo : [(2, 3), (2, 2), (1, 2)] -yee : [(2, 3), (2, 2), (1, 1)] -yee : [(2, 3), (2, 2), (3, 2)] - -Starting @ (3, 0)... -n : [(3, 0)] -nd : [(3, 0), (2, 0)] -nm : [(3, 0), (3, 1)] - -Starting @ (3, 1)... -m : [(3, 1)] -mf : [(3, 1), (2, 1)] -mfr : [(3, 1), (2, 1), (1, 0)] -mfd : [(3, 1), (2, 1), (2, 0)] -md : [(3, 1), (2, 0)] -me : [(3, 1), (2, 2)] -meo : [(3, 1), (2, 2), (1, 2)] -mee : [(3, 1), (2, 2), (1, 1)] -meed : [(3, 1), (2, 2), (1, 1), (2, 0)] -meer : [(3, 1), (2, 2), (1, 1), (1, 0)] -mev : [(3, 1), (2, 2), (1, 3)] -mee : [(3, 1), (2, 2), (3, 2)] -mn : [(3, 1), (3, 0)] -me : [(3, 1), (3, 2)] -mee : [(3, 1), (3, 2), (2, 2)] - -Starting @ (3, 2)... -e : [(3, 2)] -ee : [(3, 2), (2, 2)] -ef : [(3, 2), (2, 1)] -ey : [(3, 2), (2, 3)] -eye : [(3, 2), (2, 3), (2, 2)] -em : [(3, 2), (3, 1)] -emf : [(3, 2), (3, 1), (2, 1)] -eme : [(3, 2), (3, 1), (2, 2)] -emeer : [(3, 2), (3, 1), (2, 2), (1, 1), (1, 0)] - -Starting @ (3, 3)... -qu : [(3, 3)] -que : [(3, 3), (2, 2)] -queer : [(3, 3), (2, 2), (1, 1), (1, 0)] -queery : [(3, 3), (2, 2), (1, 1), (1, 0), (0, 0)] -quem : [(3, 3), (2, 2), (3, 1)] -queme : [(3, 3), (2, 2), (3, 1), (3, 2)] -quey : [(3, 3), (2, 2), (2, 3)] -que : [(3, 3), (3, 2)] -quey : [(3, 3), (3, 2), (2, 3)] -quem : [(3, 3), (3, 2), (3, 1)] -queme : [(3, 3), (3, 2), (3, 1), (2, 2)] + Starting @ (0, 0) +╭──────────┬──────────────────────────────────────────────────────────────────╮ +│ Word │ Path │ +├──────────┼──────────────────────────────────────────────────────────────────┤ +│ squall │ [(0, 0), (1, 1), (0, 1), (1, 0), (2, 1)] │ +│ squall │ [(0, 0), (1, 1), (1, 2), (2, 2), (2, 1)] │ +│ squall │ [(0, 0), (1, 1), (1, 2), (2, 1), (1, 0)] │ +│ squall │ [(0, 0), (1, 1), (1, 2), (2, 1), (2, 2)] │ +│ squally │ [(0, 0), (1, 1), (1, 2), (2, 1), (2, 2), (1, 3)] │ +│ squalls │ [(0, 0), (1, 1), (1, 2), (2, 1), (2, 2), (2, 3)] │ +│ squash │ [(0, 0), (1, 1), (1, 2), (2, 3), (3, 2)] │ +│ sal │ [(0, 0), (0, 1), (1, 0)] │ +│ sall │ [(0, 0), (0, 1), (1, 0), (2, 1)] │ +│ sallal │ [(0, 0), (0, 1), (1, 0), (2, 1), (1, 2), (2, 2)] │ +│ sallals │ [(0, 0), (0, 1), (1, 0), (2, 1), (1, 2), (2, 2), (2, 3)] │ +│ sallow │ [(0, 0), (0, 1), (1, 0), (2, 1), (3, 0), (3, 1)] │ +│ sallowly │ [(0, 0), (0, 1), (1, 0), (2, 1), (3, 0), (3, 1), (2, 2), (1, 3)] │ +│ sai │ [(0, 0), (0, 1), (0, 2)] │ +╰──────────┴──────────────────────────────────────────────────────────────────╯ + Starting @ (0, 1) +╭────────┬──────────────────────────────────────────────────╮ +│ Word │ Path │ +├────────┼──────────────────────────────────────────────────┤ +│ aqua │ [(0, 1), (1, 1), (1, 2)] │ +│ aquas │ [(0, 1), (1, 1), (1, 2), (2, 3)] │ +│ al │ [(0, 1), (1, 0)] │ +│ als │ [(0, 1), (1, 0), (0, 0)] │ +│ alu │ [(0, 1), (1, 0), (2, 0)] │ +│ alula │ [(0, 1), (1, 0), (2, 0), (2, 1), (1, 2)] │ +│ alulas │ [(0, 1), (1, 0), (2, 0), (2, 1), (1, 2), (2, 3)] │ +│ all │ [(0, 1), (1, 0), (2, 1)] │ +│ allay │ [(0, 1), (1, 0), (2, 1), (1, 2), (1, 3)] │ +│ allays │ [(0, 1), (1, 0), (2, 1), (1, 2), (1, 3), (2, 3)] │ +│ allow │ [(0, 1), (1, 0), (2, 1), (3, 0), (3, 1)] │ +│ aa │ [(0, 1), (1, 2)] │ +│ aal │ [(0, 1), (1, 2), (2, 2)] │ +│ aals │ [(0, 1), (1, 2), (2, 2), (2, 3)] │ +│ aal │ [(0, 1), (1, 2), (2, 1)] │ +│ aas │ [(0, 1), (1, 2), (2, 3)] │ +│ as │ [(0, 1), (0, 0)] │ +│ ai │ [(0, 1), (0, 2)] │ +│ aia │ [(0, 1), (0, 2), (1, 2)] │ +│ aias │ [(0, 1), (0, 2), (1, 2), (2, 3)] │ +╰────────┴──────────────────────────────────────────────────╯ +Starting @ (0, + 2) +╭──────┬──────╮ +│ Word │ Path │ +├──────┼──────┤ +╰──────┴──────╯ + Starting @ (0, 3) +╭─────────┬──────────────────────────────────────────────────────────╮ +│ Word │ Path │ +├─────────┼──────────────────────────────────────────────────────────┤ +│ pya │ [(0, 3), (1, 3), (1, 2)] │ +│ pyas │ [(0, 3), (1, 3), (1, 2), (2, 3)] │ +│ pa │ [(0, 3), (1, 2)] │ +│ paal │ [(0, 3), (1, 2), (0, 1), (1, 0)] │ +│ paals │ [(0, 3), (1, 2), (0, 1), (1, 0), (0, 0)] │ +│ pal │ [(0, 3), (1, 2), (2, 2)] │ +│ paly │ [(0, 3), (1, 2), (2, 2), (1, 3)] │ +│ palas │ [(0, 3), (1, 2), (2, 2), (3, 3), (2, 3)] │ +│ pall │ [(0, 3), (1, 2), (2, 2), (2, 1)] │ +│ pals │ [(0, 3), (1, 2), (2, 2), (2, 3)] │ +│ palsy │ [(0, 3), (1, 2), (2, 2), (2, 3), (1, 3)] │ +│ palsa │ [(0, 3), (1, 2), (2, 2), (2, 3), (3, 3)] │ +│ pal │ [(0, 3), (1, 2), (2, 1)] │ +│ pall │ [(0, 3), (1, 2), (2, 1), (1, 0)] │ +│ palls │ [(0, 3), (1, 2), (2, 1), (1, 0), (0, 0)] │ +│ palla │ [(0, 3), (1, 2), (2, 1), (1, 0), (0, 1)] │ +│ pall │ [(0, 3), (1, 2), (2, 1), (2, 2)] │ +│ pally │ [(0, 3), (1, 2), (2, 1), (2, 2), (1, 3)] │ +│ palla │ [(0, 3), (1, 2), (2, 1), (2, 2), (3, 3)] │ +│ pallah │ [(0, 3), (1, 2), (2, 1), (2, 2), (3, 3), (3, 2)] │ +│ pallahs │ [(0, 3), (1, 2), (2, 1), (2, 2), (3, 3), (3, 2), (2, 3)] │ +│ palls │ [(0, 3), (1, 2), (2, 1), (2, 2), (2, 3)] │ +│ pas │ [(0, 3), (1, 2), (2, 3)] │ +│ pash │ [(0, 3), (1, 2), (2, 3), (3, 2)] │ +│ pasha │ [(0, 3), (1, 2), (2, 3), (3, 2), (3, 3)] │ +│ pay │ [(0, 3), (1, 2), (1, 3)] │ +│ pays │ [(0, 3), (1, 2), (1, 3), (2, 3)] │ +│ pi │ [(0, 3), (0, 2)] │ +│ pia │ [(0, 3), (0, 2), (1, 2)] │ +│ pial │ [(0, 3), (0, 2), (1, 2), (2, 2)] │ +│ pial │ [(0, 3), (0, 2), (1, 2), (2, 1)] │ +│ pias │ [(0, 3), (0, 2), (1, 2), (2, 3)] │ +│ pia │ [(0, 3), (0, 2), (0, 1)] │ +│ pial │ [(0, 3), (0, 2), (0, 1), (1, 0)] │ +│ pias │ [(0, 3), (0, 2), (0, 1), (0, 0)] │ +╰─────────┴──────────────────────────────────────────────────────────╯ + Starting @ (1, 0) +╭───────┬──────────────────────────────────────────╮ +│ Word │ Path │ +├───────┼──────────────────────────────────────────┤ +│ la │ [(1, 0), (0, 1)] │ +│ las │ [(1, 0), (0, 1), (0, 0)] │ +│ lull │ [(1, 0), (2, 0), (2, 1), (2, 2)] │ +│ lulls │ [(1, 0), (2, 0), (2, 1), (2, 2), (2, 3)] │ +╰───────┴──────────────────────────────────────────╯ + Starting @ (1, 1) +╭───────┬──────────────────────────────────╮ +│ Word │ Path │ +├───────┼──────────────────────────────────┤ +│ qua │ [(1, 1), (0, 1)] │ +│ quai │ [(1, 1), (0, 1), (0, 2)] │ +│ quip │ [(1, 1), (0, 2), (0, 3)] │ +│ qua │ [(1, 1), (1, 2)] │ +│ quai │ [(1, 1), (1, 2), (0, 2)] │ +│ quash │ [(1, 1), (1, 2), (2, 3), (3, 2)] │ +│ quay │ [(1, 1), (1, 2), (1, 3)] │ +│ quays │ [(1, 1), (1, 2), (1, 3), (2, 3)] │ +╰───────┴──────────────────────────────────╯ + Starting @ (1, 2) +╭────────┬──────────────────────────────────────────────────╮ +│ Word │ Path │ +├────────┼──────────────────────────────────────────────────┤ +│ ai │ [(1, 2), (0, 2)] │ +│ aia │ [(1, 2), (0, 2), (0, 1)] │ +│ aias │ [(1, 2), (0, 2), (0, 1), (0, 0)] │ +│ aa │ [(1, 2), (0, 1)] │ +│ aal │ [(1, 2), (0, 1), (1, 0)] │ +│ aals │ [(1, 2), (0, 1), (1, 0), (0, 0)] │ +│ aas │ [(1, 2), (0, 1), (0, 0)] │ +│ al │ [(1, 2), (2, 2)] │ +│ ala │ [(1, 2), (2, 2), (3, 3)] │ +│ alas │ [(1, 2), (2, 2), (3, 3), (2, 3)] │ +│ all │ [(1, 2), (2, 2), (2, 1)] │ +│ allow │ [(1, 2), (2, 2), (2, 1), (3, 0), (3, 1)] │ +│ als │ [(1, 2), (2, 2), (2, 3)] │ +│ al │ [(1, 2), (2, 1)] │ +│ all │ [(1, 2), (2, 1), (1, 0)] │ +│ alls │ [(1, 2), (2, 1), (1, 0), (0, 0)] │ +│ alow │ [(1, 2), (2, 1), (3, 0), (3, 1)] │ +│ alu │ [(1, 2), (2, 1), (2, 0)] │ +│ alula │ [(1, 2), (2, 1), (2, 0), (1, 0), (0, 1)] │ +│ alulas │ [(1, 2), (2, 1), (2, 0), (1, 0), (0, 1), (0, 0)] │ +│ all │ [(1, 2), (2, 1), (2, 2)] │ +│ ally │ [(1, 2), (2, 1), (2, 2), (1, 3)] │ +│ alls │ [(1, 2), (2, 1), (2, 2), (2, 3)] │ +│ as │ [(1, 2), (2, 3)] │ +│ asyla │ [(1, 2), (2, 3), (1, 3), (2, 2), (3, 3)] │ +│ ash │ [(1, 2), (2, 3), (3, 2)] │ +│ aqua │ [(1, 2), (1, 1), (0, 1)] │ +│ aquas │ [(1, 2), (1, 1), (0, 1), (0, 0)] │ +│ ay │ [(1, 2), (1, 3)] │ +│ ays │ [(1, 2), (1, 3), (2, 3)] │ +╰────────┴──────────────────────────────────────────────────╯ + Starting @ (1, 3) +╭──────┬──────────────────────────╮ +│ Word │ Path │ +├──────┼──────────────────────────┤ +│ yip │ [(1, 3), (0, 2), (0, 3)] │ +│ ya │ [(1, 3), (1, 2)] │ +│ yap │ [(1, 3), (1, 2), (0, 3)] │ +│ yas │ [(1, 3), (1, 2), (2, 3)] │ +╰──────┴──────────────────────────╯ +Starting @ (2, + 0) +╭──────┬──────╮ +│ Word │ Path │ +├──────┼──────┤ +╰──────┴──────╯ + Starting @ (2, 1) +╭───────┬──────────────────────────────────────────╮ +│ Word │ Path │ +├───────┼──────────────────────────────────────────┤ +│ la │ [(2, 1), (1, 2)] │ +│ lap │ [(2, 1), (1, 2), (0, 3)] │ +│ las │ [(2, 1), (1, 2), (2, 3)] │ +│ lash │ [(2, 1), (1, 2), (2, 3), (3, 2)] │ +│ lay │ [(2, 1), (1, 2), (1, 3)] │ +│ lays │ [(2, 1), (1, 2), (1, 3), (2, 3)] │ +│ lo │ [(2, 1), (3, 0)] │ +│ lou │ [(2, 1), (3, 0), (2, 0)] │ +│ low │ [(2, 1), (3, 0), (3, 1)] │ +│ lowly │ [(2, 1), (3, 0), (3, 1), (2, 2), (1, 3)] │ +╰───────┴──────────────────────────────────────────╯ + Starting @ (2, 2) +╭───────┬──────────────────────────────────────────╮ +│ Word │ Path │ +├───────┼──────────────────────────────────────────┤ +│ la │ [(2, 2), (1, 2)] │ +│ lap │ [(2, 2), (1, 2), (0, 3)] │ +│ lall │ [(2, 2), (1, 2), (2, 1), (1, 0)] │ +│ lalls │ [(2, 2), (1, 2), (2, 1), (1, 0), (0, 0)] │ +│ las │ [(2, 2), (1, 2), (2, 3)] │ +│ lash │ [(2, 2), (1, 2), (2, 3), (3, 2)] │ +│ lay │ [(2, 2), (1, 2), (1, 3)] │ +│ lays │ [(2, 2), (1, 2), (1, 3), (2, 3)] │ +│ la │ [(2, 2), (3, 3)] │ +│ las │ [(2, 2), (3, 3), (2, 3)] │ +│ lash │ [(2, 2), (3, 3), (2, 3), (3, 2)] │ +│ lah │ [(2, 2), (3, 3), (3, 2)] │ +│ lahs │ [(2, 2), (3, 3), (3, 2), (2, 3)] │ +╰───────┴──────────────────────────────────────────╯ + Starting @ (2, 3) +╭─────────┬──────────────────────────────────────────────────────────╮ +│ Word │ Path │ +├─────────┼──────────────────────────────────────────────────────────┤ +│ sai │ [(2, 3), (1, 2), (0, 2)] │ +│ sap │ [(2, 3), (1, 2), (0, 3)] │ +│ sal │ [(2, 3), (1, 2), (2, 2)] │ +│ sall │ [(2, 3), (1, 2), (2, 2), (2, 1)] │ +│ sallow │ [(2, 3), (1, 2), (2, 2), (2, 1), (3, 0), (3, 1)] │ +│ sal │ [(2, 3), (1, 2), (2, 1)] │ +│ sall │ [(2, 3), (1, 2), (2, 1), (1, 0)] │ +│ sall │ [(2, 3), (1, 2), (2, 1), (2, 2)] │ +│ sally │ [(2, 3), (1, 2), (2, 1), (2, 2), (1, 3)] │ +│ say │ [(2, 3), (1, 2), (1, 3)] │ +│ sal │ [(2, 3), (3, 3), (2, 2)] │ +│ salal │ [(2, 3), (3, 3), (2, 2), (1, 2), (2, 1)] │ +│ sall │ [(2, 3), (3, 3), (2, 2), (2, 1)] │ +│ sallow │ [(2, 3), (3, 3), (2, 2), (2, 1), (3, 0), (3, 1)] │ +│ sh │ [(2, 3), (3, 2)] │ +│ sha │ [(2, 3), (3, 2), (3, 3)] │ +│ shaly │ [(2, 3), (3, 2), (3, 3), (2, 2), (1, 3)] │ +│ shall │ [(2, 3), (3, 2), (3, 3), (2, 2), (2, 1)] │ +│ shallow │ [(2, 3), (3, 2), (3, 3), (2, 2), (2, 1), (3, 0), (3, 1)] │ +│ slap │ [(2, 3), (2, 2), (1, 2), (0, 3)] │ +│ slay │ [(2, 3), (2, 2), (1, 2), (1, 3)] │ +│ sly │ [(2, 3), (2, 2), (1, 3)] │ +╰─────────┴──────────────────────────────────────────────────────────╯ + Starting @ (3, 0) +╭───────┬──────────────────────────────────────────╮ +│ Word │ Path │ +├───────┼──────────────────────────────────────────┤ +│ ou │ [(3, 0), (2, 0)] │ +│ olla │ [(3, 0), (2, 1), (1, 0), (0, 1)] │ +│ ollas │ [(3, 0), (2, 1), (1, 0), (0, 1), (0, 0)] │ +│ olla │ [(3, 0), (2, 1), (2, 2), (1, 2)] │ +│ ollas │ [(3, 0), (2, 1), (2, 2), (1, 2), (2, 3)] │ +│ olla │ [(3, 0), (2, 1), (2, 2), (3, 3)] │ +│ ollas │ [(3, 0), (2, 1), (2, 2), (3, 3), (2, 3)] │ +│ ow │ [(3, 0), (3, 1)] │ +│ owl │ [(3, 0), (3, 1), (2, 1)] │ +│ owl │ [(3, 0), (3, 1), (2, 2)] │ +│ owly │ [(3, 0), (3, 1), (2, 2), (1, 3)] │ +│ owls │ [(3, 0), (3, 1), (2, 2), (2, 3)] │ +╰───────┴──────────────────────────────────────────╯ + Starting @ (3, 1) +╭───────┬──────────────────────────────────────────╮ +│ Word │ Path │ +├───────┼──────────────────────────────────────────┤ +│ wull │ [(3, 1), (2, 0), (1, 0), (2, 1)] │ +│ wull │ [(3, 1), (2, 0), (2, 1), (1, 0)] │ +│ wulls │ [(3, 1), (2, 0), (2, 1), (1, 0), (0, 0)] │ +│ wull │ [(3, 1), (2, 0), (2, 1), (2, 2)] │ +│ wulls │ [(3, 1), (2, 0), (2, 1), (2, 2), (2, 3)] │ +│ wo │ [(3, 1), (3, 0)] │ +│ wolly │ [(3, 1), (3, 0), (2, 1), (2, 2), (1, 3)] │ +│ wha │ [(3, 1), (3, 2), (3, 3)] │ +╰───────┴──────────────────────────────────────────╯ + Starting @ (3, 2) +╭────────┬──────────────────────────────────────────────────╮ +│ Word │ Path │ +├────────┼──────────────────────────────────────────────────┤ +│ ha │ [(3, 2), (3, 3)] │ +│ has │ [(3, 2), (3, 3), (2, 3)] │ +│ halal │ [(3, 2), (3, 3), (2, 2), (1, 2), (2, 1)] │ +│ hall │ [(3, 2), (3, 3), (2, 2), (2, 1)] │ +│ hallo │ [(3, 2), (3, 3), (2, 2), (2, 1), (3, 0)] │ +│ hallow │ [(3, 2), (3, 3), (2, 2), (2, 1), (3, 0), (3, 1)] │ +╰────────┴──────────────────────────────────────────────────╯ + Starting @ (3, 3) +╭────────┬──────────────────────────────────────────────────╮ +│ Word │ Path │ +├────────┼──────────────────────────────────────────────────┤ +│ as │ [(3, 3), (2, 3)] │ +│ asyla │ [(3, 3), (2, 3), (1, 3), (2, 2), (1, 2)] │ +│ ash │ [(3, 3), (2, 3), (3, 2)] │ +│ al │ [(3, 3), (2, 2)] │ +│ ala │ [(3, 3), (2, 2), (1, 2)] │ +│ alap │ [(3, 3), (2, 2), (1, 2), (0, 3)] │ +│ alas │ [(3, 3), (2, 2), (1, 2), (2, 3)] │ +│ alay │ [(3, 3), (2, 2), (1, 2), (1, 3)] │ +│ alays │ [(3, 3), (2, 2), (1, 2), (1, 3), (2, 3)] │ +│ all │ [(3, 3), (2, 2), (2, 1)] │ +│ allay │ [(3, 3), (2, 2), (2, 1), (1, 2), (1, 3)] │ +│ allays │ [(3, 3), (2, 2), (2, 1), (1, 2), (1, 3), (2, 3)] │ +│ allow │ [(3, 3), (2, 2), (2, 1), (3, 0), (3, 1)] │ +│ als │ [(3, 3), (2, 2), (2, 3)] │ +│ ah │ [(3, 3), (3, 2)] │ +│ ahs │ [(3, 3), (3, 2), (2, 3)] │ +╰────────┴──────────────────────────────────────────────────╯ ``` # Build