From 3b79ca7519aaf73b2b6155e37a0e49b101b811af Mon Sep 17 00:00:00 2001 From: Cameron Blankenbuehler Date: Wed, 31 May 2023 18:08:04 -0400 Subject: [PATCH] Update solved 4x4 board tests - check paths - 4x4 board solving tests now checks for the original order of the words as well as the exact path for each --- tests/test_solve_4x4_board.py | 915 ++++++++++++++++++++++++++++++---- 1 file changed, 820 insertions(+), 95 deletions(-) diff --git a/tests/test_solve_4x4_board.py b/tests/test_solve_4x4_board.py index 5710665..5a0af6f 100755 --- a/tests/test_solve_4x4_board.py +++ b/tests/test_solve_4x4_board.py @@ -17,96 +17,826 @@ def board_4x4(): @pytest.fixture def expected_words_max_4(): return [ - "u", "un", "unn", "uns", "uni", "unie", "uni", "unie", "un", "unn", "uni", - "unie", "n", "ni", "nis", "nisi", "nil", "nile", "nu", "nun", "nuns", "nr", "r", - "rin", "rie", "riel", "risqu", "rise", "riss", "ria", "rial", "rial", "rin", - "rins", "rile", "rn", "rle", "rn", "re", "rel", "rei", "rein", "reis", "rein", - "e", "el", "ela", "elhi", "eli", "elia", "eir", "eila", "er", "erin", "eris", - "eria", "erin", "ern", "erns", "ern", "qu", "qui", "quin", "quis", "quis", "n", - "nu", "nun", "nr", "ns", "ni", "nis", "nies", "nies", "nis", "nisi", "ni", - "nis", "nisi", "nil", "nile", "i", "ir", "ire", "in", "inn", "inns", "ie", - "ihs", "is", "isn", "ise", "isl", "isle", "isis", "ish", "ia", "in", "inn", - "ins", "il", "ile", "ila", "l", "le", "lei", "leis", "ler", "lr", "la", "lai", - "lair", "lain", "lain", "lab", "lah", "lh", "lhb", "li", "lir", "lire", "lin", - "linn", "lie", "lier", "lis", "lise", "liss", "lish", "lin", "linn", "lins", - "i", "in", "inn", "ins", "inia", "is", "ise", "ie", "is", "isn", "ise", "isl", - "isle", "ish", "s", "sn", "si", "sir", "sire", "sin", "sie", "sier", "sia", - "sial", "sial", "sin", "sinh", "sil", "sile", "se", "sei", "seis", "sel", "ss", - "ssi", "sl", "sla", "slab", "si", "sin", "sinh", "sis", "sise", "sie", "sh", - "shi", "shin", "shia", "shin", "she", "shes", "shel", "sha", "shai", "shab", - "h", "hi", "hir", "hire", "hin", "hie", "his", "hisn", "hiss", "hia", "hin", - "hins", "hile", "hila", "hl", "hler", "hl", "he", "hes", "hei", "hein", "hes", - "hel", "hb", "hs", "hsi", "hsi", "ha", "hal", "hale", "hair", "hain", "hain", - "hail", "hab", "hal", "hals", "hale", "a", "al", "ale", "alin", "alin", "ai", - "air", "airn", "airn", "aire", "ain", "ainu", "aiel", "ais", "ain", "ainu", - "ains", "ail", "aile", "ab", "abl", "able", "al", "als", "ale", "ales", "ales", - "alb", "ah", "ahi", "ahir", "ahs", "s", "si", "sin", "sins", "sinh", "sie", - "sis", "sisi", "sise", "sish", "ss", "ssi", "ssi", "se", "sei", "seis", "sel", - "sels", "e", "es", "ess", "eh", "es", "ess", "el", "elhi", "els", "ela", "elb", - "l", "lh", "lhb", "ls", "la", "lai", "lair", "lain", "lain", "lab", "lah", "le", - "les", "less", "lei", "leis", "leis", "lehi", "les", "less", "lb", "b", "ba", - "bal", "bale", "balr", "bali", "bai", "bain", "bais", "bain", "bail", "bal", - "bals", "bale", "bah", "bhil", "bl", "bls", "blah" + ("u", [(0, 0)]), + ("un", [(0, 0), (1, 1)]), + ("unn", [(0, 0), (1, 1), (0, 1)]), + ("uns", [(0, 0), (1, 1), (2, 1)]), + ("uni", [(0, 0), (1, 1), (2, 0)]), + ("unie", [(0, 0), (1, 1), (2, 0), (3, 1)]), + ("uni", [(0, 0), (1, 1), (1, 2)]), + ("unie", [(0, 0), (1, 1), (1, 2), (0, 3)]), + ("un", [(0, 0), (0, 1)]), + ("unn", [(0, 0), (0, 1), (1, 1)]), + ("uni", [(0, 0), (0, 1), (1, 2)]), + ("unie", [(0, 0), (0, 1), (1, 2), (0, 3)]), + ("n", [(0, 1)]), + ("ni", [(0, 1), (1, 2)]), + ("nis", [(0, 1), (1, 2), (2, 1)]), + ("nisi", [(0, 1), (1, 2), (2, 1), (2, 0)]), + ("nil", [(0, 1), (1, 2), (1, 3)]), + ("nile", [(0, 1), (1, 2), (1, 3), (0, 3)]), + ("nu", [(0, 1), (0, 0)]), + ("nun", [(0, 1), (0, 0), (1, 1)]), + ("nuns", [(0, 1), (0, 0), (1, 1), (2, 1)]), + ("nr", [(0, 1), (0, 2)]), + ("r", [(0, 2)]), + ("rin", [(0, 2), (1, 2), (0, 1)]), + ("rie", [(0, 2), (1, 2), (0, 3)]), + ("riel", [(0, 2), (1, 2), (0, 3), (1, 3)]), + ("risqu", [(0, 2), (1, 2), (2, 1), (1, 0)]), + ("rise", [(0, 2), (1, 2), (2, 1), (3, 1)]), + ("riss", [(0, 2), (1, 2), (2, 1), (3, 0)]), + ("ria", [(0, 2), (1, 2), (2, 3)]), + ("rial", [(0, 2), (1, 2), (2, 3), (1, 3)]), + ("rial", [(0, 2), (1, 2), (2, 3), (3, 2)]), + ("rin", [(0, 2), (1, 2), (1, 1)]), + ("rins", [(0, 2), (1, 2), (1, 1), (2, 1)]), + ("rile", [(0, 2), (1, 2), (1, 3), (0, 3)]), + ("rn", [(0, 2), (1, 1)]), + ("rle", [(0, 2), (1, 3), (0, 3)]), + ("rn", [(0, 2), (0, 1)]), + ("re", [(0, 2), (0, 3)]), + ("rel", [(0, 2), (0, 3), (1, 3)]), + ("rei", [(0, 2), (0, 3), (1, 2)]), + ("rein", [(0, 2), (0, 3), (1, 2), (0, 1)]), + ("reis", [(0, 2), (0, 3), (1, 2), (2, 1)]), + ("rein", [(0, 2), (0, 3), (1, 2), (1, 1)]), + ("e", [(0, 3)]), + ("el", [(0, 3), (1, 3)]), + ("ela", [(0, 3), (1, 3), (2, 3)]), + ("elhi", [(0, 3), (1, 3), (2, 2), (1, 2)]), + ("eli", [(0, 3), (1, 3), (1, 2)]), + ("elia", [(0, 3), (1, 3), (1, 2), (2, 3)]), + ("eir", [(0, 3), (1, 2), (0, 2)]), + ("eila", [(0, 3), (1, 2), (1, 3), (2, 3)]), + ("er", [(0, 3), (0, 2)]), + ("erin", [(0, 3), (0, 2), (1, 2), (0, 1)]), + ("eris", [(0, 3), (0, 2), (1, 2), (2, 1)]), + ("eria", [(0, 3), (0, 2), (1, 2), (2, 3)]), + ("erin", [(0, 3), (0, 2), (1, 2), (1, 1)]), + ("ern", [(0, 3), (0, 2), (1, 1)]), + ("erns", [(0, 3), (0, 2), (1, 1), (2, 1)]), + ("ern", [(0, 3), (0, 2), (0, 1)]), + ("qu", [(1, 0)]), + ("qui", [(1, 0), (2, 0)]), + ("quin", [(1, 0), (2, 0), (1, 1)]), + ("quis", [(1, 0), (2, 0), (3, 0)]), + ("quis", [(1, 0), (2, 0), (2, 1)]), + ("n", [(1, 1)]), + ("nu", [(1, 1), (0, 0)]), + ("nun", [(1, 1), (0, 0), (0, 1)]), + ("nr", [(1, 1), (0, 2)]), + ("ns", [(1, 1), (2, 1)]), + ("ni", [(1, 1), (2, 0)]), + ("nis", [(1, 1), (2, 0), (3, 0)]), + ("nies", [(1, 1), (2, 0), (3, 1), (2, 1)]), + ("nies", [(1, 1), (2, 0), (3, 1), (3, 0)]), + ("nis", [(1, 1), (2, 0), (2, 1)]), + ("nisi", [(1, 1), (2, 0), (2, 1), (1, 2)]), + ("ni", [(1, 1), (1, 2)]), + ("nis", [(1, 1), (1, 2), (2, 1)]), + ("nisi", [(1, 1), (1, 2), (2, 1), (2, 0)]), + ("nil", [(1, 1), (1, 2), (1, 3)]), + ("nile", [(1, 1), (1, 2), (1, 3), (0, 3)]), + ("i", [(1, 2)]), + ("ir", [(1, 2), (0, 2)]), + ("ire", [(1, 2), (0, 2), (0, 3)]), + ("in", [(1, 2), (0, 1)]), + ("inn", [(1, 2), (0, 1), (1, 1)]), + ("inns", [(1, 2), (0, 1), (1, 1), (2, 1)]), + ("ie", [(1, 2), (0, 3)]), + ("ihs", [(1, 2), (2, 2), (2, 1)]), + ("is", [(1, 2), (2, 1)]), + ("isn", [(1, 2), (2, 1), (1, 1)]), + ("ise", [(1, 2), (2, 1), (3, 1)]), + ("isl", [(1, 2), (2, 1), (3, 2)]), + ("isle", [(1, 2), (2, 1), (3, 2), (3, 1)]), + ("isis", [(1, 2), (2, 1), (2, 0), (3, 0)]), + ("ish", [(1, 2), (2, 1), (2, 2)]), + ("ia", [(1, 2), (2, 3)]), + ("in", [(1, 2), (1, 1)]), + ("inn", [(1, 2), (1, 1), (0, 1)]), + ("ins", [(1, 2), (1, 1), (2, 1)]), + ("il", [(1, 2), (1, 3)]), + ("ile", [(1, 2), (1, 3), (0, 3)]), + ("ila", [(1, 2), (1, 3), (2, 3)]), + ("l", [(1, 3)]), + ("le", [(1, 3), (0, 3)]), + ("lei", [(1, 3), (0, 3), (1, 2)]), + ("leis", [(1, 3), (0, 3), (1, 2), (2, 1)]), + ("ler", [(1, 3), (0, 3), (0, 2)]), + ("lr", [(1, 3), (0, 2)]), + ("la", [(1, 3), (2, 3)]), + ("lai", [(1, 3), (2, 3), (1, 2)]), + ("lair", [(1, 3), (2, 3), (1, 2), (0, 2)]), + ("lain", [(1, 3), (2, 3), (1, 2), (0, 1)]), + ("lain", [(1, 3), (2, 3), (1, 2), (1, 1)]), + ("lab", [(1, 3), (2, 3), (3, 3)]), + ("lah", [(1, 3), (2, 3), (2, 2)]), + ("lh", [(1, 3), (2, 2)]), + ("lhb", [(1, 3), (2, 2), (3, 3)]), + ("li", [(1, 3), (1, 2)]), + ("lir", [(1, 3), (1, 2), (0, 2)]), + ("lire", [(1, 3), (1, 2), (0, 2), (0, 3)]), + ("lin", [(1, 3), (1, 2), (0, 1)]), + ("linn", [(1, 3), (1, 2), (0, 1), (1, 1)]), + ("lie", [(1, 3), (1, 2), (0, 3)]), + ("lier", [(1, 3), (1, 2), (0, 3), (0, 2)]), + ("lis", [(1, 3), (1, 2), (2, 1)]), + ("lise", [(1, 3), (1, 2), (2, 1), (3, 1)]), + ("liss", [(1, 3), (1, 2), (2, 1), (3, 0)]), + ("lish", [(1, 3), (1, 2), (2, 1), (2, 2)]), + ("lin", [(1, 3), (1, 2), (1, 1)]), + ("linn", [(1, 3), (1, 2), (1, 1), (0, 1)]), + ("lins", [(1, 3), (1, 2), (1, 1), (2, 1)]), + ("i", [(2, 0)]), + ("in", [(2, 0), (1, 1)]), + ("inn", [(2, 0), (1, 1), (0, 1)]), + ("ins", [(2, 0), (1, 1), (2, 1)]), + ("inia", [(2, 0), (1, 1), (1, 2), (2, 3)]), + ("is", [(2, 0), (3, 0)]), + ("ise", [(2, 0), (3, 0), (3, 1)]), + ("ie", [(2, 0), (3, 1)]), + ("is", [(2, 0), (2, 1)]), + ("isn", [(2, 0), (2, 1), (1, 1)]), + ("ise", [(2, 0), (2, 1), (3, 1)]), + ("isl", [(2, 0), (2, 1), (3, 2)]), + ("isle", [(2, 0), (2, 1), (3, 2), (3, 1)]), + ("ish", [(2, 0), (2, 1), (2, 2)]), + ("s", [(2, 1)]), + ("sn", [(2, 1), (1, 1)]), + ("si", [(2, 1), (1, 2)]), + ("sir", [(2, 1), (1, 2), (0, 2)]), + ("sire", [(2, 1), (1, 2), (0, 2), (0, 3)]), + ("sin", [(2, 1), (1, 2), (0, 1)]), + ("sie", [(2, 1), (1, 2), (0, 3)]), + ("sier", [(2, 1), (1, 2), (0, 3), (0, 2)]), + ("sia", [(2, 1), (1, 2), (2, 3)]), + ("sial", [(2, 1), (1, 2), (2, 3), (1, 3)]), + ("sial", [(2, 1), (1, 2), (2, 3), (3, 2)]), + ("sin", [(2, 1), (1, 2), (1, 1)]), + ("sinh", [(2, 1), (1, 2), (1, 1), (2, 2)]), + ("sil", [(2, 1), (1, 2), (1, 3)]), + ("sile", [(2, 1), (1, 2), (1, 3), (0, 3)]), + ("se", [(2, 1), (3, 1)]), + ("sei", [(2, 1), (3, 1), (2, 0)]), + ("seis", [(2, 1), (3, 1), (2, 0), (3, 0)]), + ("sel", [(2, 1), (3, 1), (3, 2)]), + ("ss", [(2, 1), (3, 0)]), + ("ssi", [(2, 1), (3, 0), (2, 0)]), + ("sl", [(2, 1), (3, 2)]), + ("sla", [(2, 1), (3, 2), (2, 3)]), + ("slab", [(2, 1), (3, 2), (2, 3), (3, 3)]), + ("si", [(2, 1), (2, 0)]), + ("sin", [(2, 1), (2, 0), (1, 1)]), + ("sinh", [(2, 1), (2, 0), (1, 1), (2, 2)]), + ("sis", [(2, 1), (2, 0), (3, 0)]), + ("sise", [(2, 1), (2, 0), (3, 0), (3, 1)]), + ("sie", [(2, 1), (2, 0), (3, 1)]), + ("sh", [(2, 1), (2, 2)]), + ("shi", [(2, 1), (2, 2), (1, 2)]), + ("shin", [(2, 1), (2, 2), (1, 2), (0, 1)]), + ("shia", [(2, 1), (2, 2), (1, 2), (2, 3)]), + ("shin", [(2, 1), (2, 2), (1, 2), (1, 1)]), + ("she", [(2, 1), (2, 2), (3, 1)]), + ("shes", [(2, 1), (2, 2), (3, 1), (3, 0)]), + ("shel", [(2, 1), (2, 2), (3, 1), (3, 2)]), + ("sha", [(2, 1), (2, 2), (2, 3)]), + ("shai", [(2, 1), (2, 2), (2, 3), (1, 2)]), + ("shab", [(2, 1), (2, 2), (2, 3), (3, 3)]), + ("h", [(2, 2)]), + ("hi", [(2, 2), (1, 2)]), + ("hir", [(2, 2), (1, 2), (0, 2)]), + ("hire", [(2, 2), (1, 2), (0, 2), (0, 3)]), + ("hin", [(2, 2), (1, 2), (0, 1)]), + ("hie", [(2, 2), (1, 2), (0, 3)]), + ("his", [(2, 2), (1, 2), (2, 1)]), + ("hisn", [(2, 2), (1, 2), (2, 1), (1, 1)]), + ("hiss", [(2, 2), (1, 2), (2, 1), (3, 0)]), + ("hia", [(2, 2), (1, 2), (2, 3)]), + ("hin", [(2, 2), (1, 2), (1, 1)]), + ("hins", [(2, 2), (1, 2), (1, 1), (2, 1)]), + ("hile", [(2, 2), (1, 2), (1, 3), (0, 3)]), + ("hila", [(2, 2), (1, 2), (1, 3), (2, 3)]), + ("hl", [(2, 2), (1, 3)]), + ("hler", [(2, 2), (1, 3), (0, 3), (0, 2)]), + ("hl", [(2, 2), (3, 2)]), + ("he", [(2, 2), (3, 1)]), + ("hes", [(2, 2), (3, 1), (2, 1)]), + ("hei", [(2, 2), (3, 1), (2, 0)]), + ("hein", [(2, 2), (3, 1), (2, 0), (1, 1)]), + ("hes", [(2, 2), (3, 1), (3, 0)]), + ("hel", [(2, 2), (3, 1), (3, 2)]), + ("hb", [(2, 2), (3, 3)]), + ("hs", [(2, 2), (2, 1)]), + ("hsi", [(2, 2), (2, 1), (1, 2)]), + ("hsi", [(2, 2), (2, 1), (2, 0)]), + ("ha", [(2, 2), (2, 3)]), + ("hal", [(2, 2), (2, 3), (1, 3)]), + ("hale", [(2, 2), (2, 3), (1, 3), (0, 3)]), + ("hair", [(2, 2), (2, 3), (1, 2), (0, 2)]), + ("hain", [(2, 2), (2, 3), (1, 2), (0, 1)]), + ("hain", [(2, 2), (2, 3), (1, 2), (1, 1)]), + ("hail", [(2, 2), (2, 3), (1, 2), (1, 3)]), + ("hab", [(2, 2), (2, 3), (3, 3)]), + ("hal", [(2, 2), (2, 3), (3, 2)]), + ("hals", [(2, 2), (2, 3), (3, 2), (2, 1)]), + ("hale", [(2, 2), (2, 3), (3, 2), (3, 1)]), + ("a", [(2, 3)]), + ("al", [(2, 3), (1, 3)]), + ("ale", [(2, 3), (1, 3), (0, 3)]), + ("alin", [(2, 3), (1, 3), (1, 2), (0, 1)]), + ("alin", [(2, 3), (1, 3), (1, 2), (1, 1)]), + ("ai", [(2, 3), (1, 2)]), + ("air", [(2, 3), (1, 2), (0, 2)]), + ("airn", [(2, 3), (1, 2), (0, 2), (1, 1)]), + ("airn", [(2, 3), (1, 2), (0, 2), (0, 1)]), + ("aire", [(2, 3), (1, 2), (0, 2), (0, 3)]), + ("ain", [(2, 3), (1, 2), (0, 1)]), + ("ainu", [(2, 3), (1, 2), (0, 1), (0, 0)]), + ("aiel", [(2, 3), (1, 2), (0, 3), (1, 3)]), + ("ais", [(2, 3), (1, 2), (2, 1)]), + ("ain", [(2, 3), (1, 2), (1, 1)]), + ("ainu", [(2, 3), (1, 2), (1, 1), (0, 0)]), + ("ains", [(2, 3), (1, 2), (1, 1), (2, 1)]), + ("ail", [(2, 3), (1, 2), (1, 3)]), + ("aile", [(2, 3), (1, 2), (1, 3), (0, 3)]), + ("ab", [(2, 3), (3, 3)]), + ("abl", [(2, 3), (3, 3), (3, 2)]), + ("able", [(2, 3), (3, 3), (3, 2), (3, 1)]), + ("al", [(2, 3), (3, 2)]), + ("als", [(2, 3), (3, 2), (2, 1)]), + ("ale", [(2, 3), (3, 2), (3, 1)]), + ("ales", [(2, 3), (3, 2), (3, 1), (2, 1)]), + ("ales", [(2, 3), (3, 2), (3, 1), (3, 0)]), + ("alb", [(2, 3), (3, 2), (3, 3)]), + ("ah", [(2, 3), (2, 2)]), + ("ahi", [(2, 3), (2, 2), (1, 2)]), + ("ahir", [(2, 3), (2, 2), (1, 2), (0, 2)]), + ("ahs", [(2, 3), (2, 2), (2, 1)]), + ("s", [(3, 0)]), + ("si", [(3, 0), (2, 0)]), + ("sin", [(3, 0), (2, 0), (1, 1)]), + ("sins", [(3, 0), (2, 0), (1, 1), (2, 1)]), + ("sinh", [(3, 0), (2, 0), (1, 1), (2, 2)]), + ("sie", [(3, 0), (2, 0), (3, 1)]), + ("sis", [(3, 0), (2, 0), (2, 1)]), + ("sisi", [(3, 0), (2, 0), (2, 1), (1, 2)]), + ("sise", [(3, 0), (2, 0), (2, 1), (3, 1)]), + ("sish", [(3, 0), (2, 0), (2, 1), (2, 2)]), + ("ss", [(3, 0), (2, 1)]), + ("ssi", [(3, 0), (2, 1), (1, 2)]), + ("ssi", [(3, 0), (2, 1), (2, 0)]), + ("se", [(3, 0), (3, 1)]), + ("sei", [(3, 0), (3, 1), (2, 0)]), + ("seis", [(3, 0), (3, 1), (2, 0), (2, 1)]), + ("sel", [(3, 0), (3, 1), (3, 2)]), + ("sels", [(3, 0), (3, 1), (3, 2), (2, 1)]), + ("e", [(3, 1)]), + ("es", [(3, 1), (2, 1)]), + ("ess", [(3, 1), (2, 1), (3, 0)]), + ("eh", [(3, 1), (2, 2)]), + ("es", [(3, 1), (3, 0)]), + ("ess", [(3, 1), (3, 0), (2, 1)]), + ("el", [(3, 1), (3, 2)]), + ("elhi", [(3, 1), (3, 2), (2, 2), (1, 2)]), + ("els", [(3, 1), (3, 2), (2, 1)]), + ("ela", [(3, 1), (3, 2), (2, 3)]), + ("elb", [(3, 1), (3, 2), (3, 3)]), + ("l", [(3, 2)]), + ("lh", [(3, 2), (2, 2)]), + ("lhb", [(3, 2), (2, 2), (3, 3)]), + ("ls", [(3, 2), (2, 1)]), + ("la", [(3, 2), (2, 3)]), + ("lai", [(3, 2), (2, 3), (1, 2)]), + ("lair", [(3, 2), (2, 3), (1, 2), (0, 2)]), + ("lain", [(3, 2), (2, 3), (1, 2), (0, 1)]), + ("lain", [(3, 2), (2, 3), (1, 2), (1, 1)]), + ("lab", [(3, 2), (2, 3), (3, 3)]), + ("lah", [(3, 2), (2, 3), (2, 2)]), + ("le", [(3, 2), (3, 1)]), + ("les", [(3, 2), (3, 1), (2, 1)]), + ("less", [(3, 2), (3, 1), (2, 1), (3, 0)]), + ("lei", [(3, 2), (3, 1), (2, 0)]), + ("leis", [(3, 2), (3, 1), (2, 0), (3, 0)]), + ("leis", [(3, 2), (3, 1), (2, 0), (2, 1)]), + ("lehi", [(3, 2), (3, 1), (2, 2), (1, 2)]), + ("les", [(3, 2), (3, 1), (3, 0)]), + ("less", [(3, 2), (3, 1), (3, 0), (2, 1)]), + ("lb", [(3, 2), (3, 3)]), + ("b", [(3, 3)]), + ("ba", [(3, 3), (2, 3)]), + ("bal", [(3, 3), (2, 3), (1, 3)]), + ("bale", [(3, 3), (2, 3), (1, 3), (0, 3)]), + ("balr", [(3, 3), (2, 3), (1, 3), (0, 2)]), + ("bali", [(3, 3), (2, 3), (1, 3), (1, 2)]), + ("bai", [(3, 3), (2, 3), (1, 2)]), + ("bain", [(3, 3), (2, 3), (1, 2), (0, 1)]), + ("bais", [(3, 3), (2, 3), (1, 2), (2, 1)]), + ("bain", [(3, 3), (2, 3), (1, 2), (1, 1)]), + ("bail", [(3, 3), (2, 3), (1, 2), (1, 3)]), + ("bal", [(3, 3), (2, 3), (3, 2)]), + ("bals", [(3, 3), (2, 3), (3, 2), (2, 1)]), + ("bale", [(3, 3), (2, 3), (3, 2), (3, 1)]), + ("bah", [(3, 3), (2, 3), (2, 2)]), + ("bhil", [(3, 3), (2, 2), (1, 2), (1, 3)]), + ("bl", [(3, 3), (3, 2)]), + ("bls", [(3, 3), (3, 2), (2, 1)]), + ("blah", [(3, 3), (3, 2), (2, 3), (2, 2)]), ] @pytest.fixture def expected_words_max_20(): return [ - "u","un","unn","unrelinquishable","unrelishable","unreliable","unrein","uns", - "unsin","unslain","unshale","unshale","uni","unie","unhale","unhair","unhale", - "uni","unie","un","unn","uni","unie","unrelishable","unreliable", - "unrelinquishable","unrein","n","ni","nihal","nihal","nis","nisei","niseis", - "nisse","nisi","nil","nile","nu","nun","nuns","nr","r","rin","rie", - "riel","risqu","rise","rises","riss","rissel","ria","rial","rial", - "rials","rin","rins","rinse","rinses","rile","rn","rle","rn", - "re","rel","relais","relinquish","relinquishes","relish","relishes", - "relishable","reliable","relinquish","relinquishes","rei","rein","reis", - "rein","reins","e","el","ela","elain","elain","elains","elhi","eli","elisha", - "elia","eir","eila","er","erin","eris","eria","erin","ern","erns","ernie", - "ern","qu","qui","quin","quins","quinse","quinin","quiniela","quinia", - "quis","quis","quisle","n","nu","nun","nr","ns","ni", - "nis","nisse","nies","nies","niels","nis","nisi","nisse","ni", - "nihal","nihal","nis","nisei","niseis","nisse","nisi","nil","nile", - "i","ir","ire","in","inn","inns","ie","ihs","is", - "isn","ise","issei","isl","isle","isles","isis","ish","ia", - "in","inn","ins","inisle","inhale","inhaler","inhale","inhales","inhales", - "il","ile","ila","l","le","lei","leis","leiss","ler", - "lr","la","lai","lair","lain","laisse","lain","lab","lah", - "lh","lhb","li","lir","lire","lin","linn","linns","linquish", - "lie","lier","lis","lise","liss","lisle","lisles","lish","liable", - "lin","linn","lins","linie","linha","linquish","i","in","inn", - "ins","inhale","inhaler","inhale","inhales","inhales","inisle","inia","inial", - "inial","is","ise","ie","is","isn","ise","isl","isle", - "isles","ish","s","sn","snies","snirl","squin","squinnier","si", - "sir","sire","sin","sie","sier","sia","sial","sial","sin", - "sinh","sil","sile","se","sei","seis","sel","selah","ss", - "ssi","sl","sla","slain","slain","slab","si","sin","sinh", - "sis","sise","sisel","sie","sh","shi","shirl","shire","shin", - "shinnies","shiel","shier","shia","shin","she","shes","shel","shela", - "sha","shale","shalier","shai","shairn","shairn","shab","shale","shales", - "h","hi","hir","hire","hin","hinnies","hinnies","hie","his", - "hisn","hiss","hissel","hisis","hia","hin","hins","hile","hila", - "hl","hler","hl","he","hes","hei","hein","heinie","hes", - "hel","hb","hs","hsi","hsi","ha","hal","hale","haler", - "hair","haire","hain","hain","hail","hailer","hab","hable","hal", - "hals","halse","hale","hales","hales","a","al","ale","alin", - "alish","alin","ai","air","airn","airns","airn","aire","ain", - "ainu","aiel","ais","aisle","aisles","ain","ainu","ains","ail", - "aile","ab","abl","able","ables","ables","al","als","ale", - "ales","ales","alb","ah","ahi","ahir","ahs","s","si", - "sin","sins","sinh","sinhs","sie","sis","sisi","sise","sisel", - "sish","ss","ssi","ssi","se","sesqui","sesia","sei","seis", - "seisin","seisin","sel","sels","selah","selahs","e","es","ess", - "eshin","eshin","eh","es","ess","essie","el","elhi","els", - "elsin","elsin","elsin","elshin","elshin","ela","elain","elain","elains", - "elb","l","lh","lhb","ls","la","lai","lair","lain", - "laisse","lain","lab","lah","le","les","less","lei","leis", - "leiss","leis","leiss","lehi","les","less","lessn","lb","b", - "ba","bal","bale","balei","baleise","baler","balr","bali","bai", - "bairn","bairns","bairnie","bairnish","bairn","bain","bais","bain","bainie", - "bail","baile","bailer","bal","bals","bale","bales","balei","bales", - "bah","bhil","bl","bls","blair","blain","blain","blains","blah", - "blahs","bless","bless" + ("u", [(0, 0)]), + ("un", [(0, 0), (1, 1)]), + ("unn", [(0, 0), (1, 1), (0, 1)]), + ("unrelinquishable", [(0, 0), (1, 1), (0, 2), (0, 3), (1, 3), (1, 2), (0, 1), (1, 0), (2, 0), (2, 1), (2, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("unrelishable", [(0, 0), (1, 1), (0, 2), (0, 3), (1, 3), (1, 2), (2, 1), (2, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("unreliable", [(0, 0), (1, 1), (0, 2), (0, 3), (1, 3), (1, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("unrein", [(0, 0), (1, 1), (0, 2), (0, 3), (1, 2), (0, 1)]), + ("uns", [(0, 0), (1, 1), (2, 1)]), + ("unsin", [(0, 0), (1, 1), (2, 1), (1, 2), (0, 1)]), + ("unslain", [(0, 0), (1, 1), (2, 1), (3, 2), (2, 3), (1, 2), (0, 1)]), + ("unshale", [(0, 0), (1, 1), (2, 1), (2, 2), (2, 3), (1, 3), (0, 3)]), + ("unshale", [(0, 0), (1, 1), (2, 1), (2, 2), (2, 3), (3, 2), (3, 1)]), + ("uni", [(0, 0), (1, 1), (2, 0)]), + ("unie", [(0, 0), (1, 1), (2, 0), (3, 1)]), + ("unhale", [(0, 0), (1, 1), (2, 2), (2, 3), (1, 3), (0, 3)]), + ("unhair", [(0, 0), (1, 1), (2, 2), (2, 3), (1, 2), (0, 2)]), + ("unhale", [(0, 0), (1, 1), (2, 2), (2, 3), (3, 2), (3, 1)]), + ("uni", [(0, 0), (1, 1), (1, 2)]), + ("unie", [(0, 0), (1, 1), (1, 2), (0, 3)]), + ("un", [(0, 0), (0, 1)]), + ("unn", [(0, 0), (0, 1), (1, 1)]), + ("uni", [(0, 0), (0, 1), (1, 2)]), + ("unie", [(0, 0), (0, 1), (1, 2), (0, 3)]), + ("unrelishable", [(0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (1, 2), (2, 1), (2, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("unreliable", [(0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (1, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("unrelinquishable", [(0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (1, 2), (1, 1), (1, 0), (2, 0), (2, 1), (2, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("unrein", [(0, 0), (0, 1), (0, 2), (0, 3), (1, 2), (1, 1)]), + ("n", [(0, 1)]), + ("ni", [(0, 1), (1, 2)]), + ("nihal", [(0, 1), (1, 2), (2, 2), (2, 3), (1, 3)]), + ("nihal", [(0, 1), (1, 2), (2, 2), (2, 3), (3, 2)]), + ("nis", [(0, 1), (1, 2), (2, 1)]), + ("nisei", [(0, 1), (1, 2), (2, 1), (3, 1), (2, 0)]), + ("niseis", [(0, 1), (1, 2), (2, 1), (3, 1), (2, 0), (3, 0)]), + ("nisse", [(0, 1), (1, 2), (2, 1), (3, 0), (3, 1)]), + ("nisi", [(0, 1), (1, 2), (2, 1), (2, 0)]), + ("nil", [(0, 1), (1, 2), (1, 3)]), + ("nile", [(0, 1), (1, 2), (1, 3), (0, 3)]), + ("nu", [(0, 1), (0, 0)]), + ("nun", [(0, 1), (0, 0), (1, 1)]), + ("nuns", [(0, 1), (0, 0), (1, 1), (2, 1)]), + ("nr", [(0, 1), (0, 2)]), + ("r", [(0, 2)]), + ("rin", [(0, 2), (1, 2), (0, 1)]), + ("rie", [(0, 2), (1, 2), (0, 3)]), + ("riel", [(0, 2), (1, 2), (0, 3), (1, 3)]), + ("risqu", [(0, 2), (1, 2), (2, 1), (1, 0)]), + ("rise", [(0, 2), (1, 2), (2, 1), (3, 1)]), + ("rises", [(0, 2), (1, 2), (2, 1), (3, 1), (3, 0)]), + ("riss", [(0, 2), (1, 2), (2, 1), (3, 0)]), + ("rissel", [(0, 2), (1, 2), (2, 1), (3, 0), (3, 1), (3, 2)]), + ("ria", [(0, 2), (1, 2), (2, 3)]), + ("rial", [(0, 2), (1, 2), (2, 3), (1, 3)]), + ("rial", [(0, 2), (1, 2), (2, 3), (3, 2)]), + ("rials", [(0, 2), (1, 2), (2, 3), (3, 2), (2, 1)]), + ("rin", [(0, 2), (1, 2), (1, 1)]), + ("rins", [(0, 2), (1, 2), (1, 1), (2, 1)]), + ("rinse", [(0, 2), (1, 2), (1, 1), (2, 1), (3, 1)]), + ("rinses", [(0, 2), (1, 2), (1, 1), (2, 1), (3, 1), (3, 0)]), + ("rile", [(0, 2), (1, 2), (1, 3), (0, 3)]), + ("rn", [(0, 2), (1, 1)]), + ("rle", [(0, 2), (1, 3), (0, 3)]), + ("rn", [(0, 2), (0, 1)]), + ("re", [(0, 2), (0, 3)]), + ("rel", [(0, 2), (0, 3), (1, 3)]), + ("relais", [(0, 2), (0, 3), (1, 3), (2, 3), (1, 2), (2, 1)]), + ("relinquish", [(0, 2), (0, 3), (1, 3), (1, 2), (0, 1), (1, 0), (2, 0), (2, 1), (2, 2)]), + ("relinquishes", [(0, 2), (0, 3), (1, 3), (1, 2), (0, 1), (1, 0), (2, 0), (2, 1), (2, 2), (3, 1), (3, 0)]), + ("relish", [(0, 2), (0, 3), (1, 3), (1, 2), (2, 1), (2, 2)]), + ("relishes", [(0, 2), (0, 3), (1, 3), (1, 2), (2, 1), (2, 2), (3, 1), (3, 0)]), + ("relishable", [(0, 2), (0, 3), (1, 3), (1, 2), (2, 1), (2, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("reliable", [(0, 2), (0, 3), (1, 3), (1, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("relinquish", [(0, 2), (0, 3), (1, 3), (1, 2), (1, 1), (1, 0), (2, 0), (2, 1), (2, 2)]), + ("relinquishes", [(0, 2), (0, 3), (1, 3), (1, 2), (1, 1), (1, 0), (2, 0), (2, 1), (2, 2), (3, 1), (3, 0)]), + ("rei", [(0, 2), (0, 3), (1, 2)]), + ("rein", [(0, 2), (0, 3), (1, 2), (0, 1)]), + ("reis", [(0, 2), (0, 3), (1, 2), (2, 1)]), + ("rein", [(0, 2), (0, 3), (1, 2), (1, 1)]), + ("reins", [(0, 2), (0, 3), (1, 2), (1, 1), (2, 1)]), + ("e", [(0, 3)]), + ("el", [(0, 3), (1, 3)]), + ("ela", [(0, 3), (1, 3), (2, 3)]), + ("elain", [(0, 3), (1, 3), (2, 3), (1, 2), (0, 1)]), + ("elain", [(0, 3), (1, 3), (2, 3), (1, 2), (1, 1)]), + ("elains", [(0, 3), (1, 3), (2, 3), (1, 2), (1, 1), (2, 1)]), + ("elhi", [(0, 3), (1, 3), (2, 2), (1, 2)]), + ("eli", [(0, 3), (1, 3), (1, 2)]), + ("elisha", [(0, 3), (1, 3), (1, 2), (2, 1), (2, 2), (2, 3)]), + ("elia", [(0, 3), (1, 3), (1, 2), (2, 3)]), + ("eir", [(0, 3), (1, 2), (0, 2)]), + ("eila", [(0, 3), (1, 2), (1, 3), (2, 3)]), + ("er", [(0, 3), (0, 2)]), + ("erin", [(0, 3), (0, 2), (1, 2), (0, 1)]), + ("eris", [(0, 3), (0, 2), (1, 2), (2, 1)]), + ("eria", [(0, 3), (0, 2), (1, 2), (2, 3)]), + ("erin", [(0, 3), (0, 2), (1, 2), (1, 1)]), + ("ern", [(0, 3), (0, 2), (1, 1)]), + ("erns", [(0, 3), (0, 2), (1, 1), (2, 1)]), + ("ernie", [(0, 3), (0, 2), (1, 1), (2, 0), (3, 1)]), + ("ern", [(0, 3), (0, 2), (0, 1)]), + ("qu", [(1, 0)]), + ("qui", [(1, 0), (2, 0)]), + ("quin", [(1, 0), (2, 0), (1, 1)]), + ("quins", [(1, 0), (2, 0), (1, 1), (2, 1)]), + ("quinse", [(1, 0), (2, 0), (1, 1), (2, 1), (3, 1)]), + ("quinin", [(1, 0), (2, 0), (1, 1), (1, 2), (0, 1)]), + ("quiniela", [(1, 0), (2, 0), (1, 1), (1, 2), (0, 3), (1, 3), (2, 3)]), + ("quinia", [(1, 0), (2, 0), (1, 1), (1, 2), (2, 3)]), + ("quis", [(1, 0), (2, 0), (3, 0)]), + ("quis", [(1, 0), (2, 0), (2, 1)]), + ("quisle", [(1, 0), (2, 0), (2, 1), (3, 2), (3, 1)]), + ("n", [(1, 1)]), + ("nu", [(1, 1), (0, 0)]), + ("nun", [(1, 1), (0, 0), (0, 1)]), + ("nr", [(1, 1), (0, 2)]), + ("ns", [(1, 1), (2, 1)]), + ("ni", [(1, 1), (2, 0)]), + ("nis", [(1, 1), (2, 0), (3, 0)]), + ("nisse", [(1, 1), (2, 0), (3, 0), (2, 1), (3, 1)]), + ("nies", [(1, 1), (2, 0), (3, 1), (2, 1)]), + ("nies", [(1, 1), (2, 0), (3, 1), (3, 0)]), + ("niels", [(1, 1), (2, 0), (3, 1), (3, 2), (2, 1)]), + ("nis", [(1, 1), (2, 0), (2, 1)]), + ("nisi", [(1, 1), (2, 0), (2, 1), (1, 2)]), + ("nisse", [(1, 1), (2, 0), (2, 1), (3, 0), (3, 1)]), + ("ni", [(1, 1), (1, 2)]), + ("nihal", [(1, 1), (1, 2), (2, 2), (2, 3), (1, 3)]), + ("nihal", [(1, 1), (1, 2), (2, 2), (2, 3), (3, 2)]), + ("nis", [(1, 1), (1, 2), (2, 1)]), + ("nisei", [(1, 1), (1, 2), (2, 1), (3, 1), (2, 0)]), + ("niseis", [(1, 1), (1, 2), (2, 1), (3, 1), (2, 0), (3, 0)]), + ("nisse", [(1, 1), (1, 2), (2, 1), (3, 0), (3, 1)]), + ("nisi", [(1, 1), (1, 2), (2, 1), (2, 0)]), + ("nil", [(1, 1), (1, 2), (1, 3)]), + ("nile", [(1, 1), (1, 2), (1, 3), (0, 3)]), + ("i", [(1, 2)]), + ("ir", [(1, 2), (0, 2)]), + ("ire", [(1, 2), (0, 2), (0, 3)]), + ("in", [(1, 2), (0, 1)]), + ("inn", [(1, 2), (0, 1), (1, 1)]), + ("inns", [(1, 2), (0, 1), (1, 1), (2, 1)]), + ("ie", [(1, 2), (0, 3)]), + ("ihs", [(1, 2), (2, 2), (2, 1)]), + ("is", [(1, 2), (2, 1)]), + ("isn", [(1, 2), (2, 1), (1, 1)]), + ("ise", [(1, 2), (2, 1), (3, 1)]), + ("issei", [(1, 2), (2, 1), (3, 0), (3, 1), (2, 0)]), + ("isl", [(1, 2), (2, 1), (3, 2)]), + ("isle", [(1, 2), (2, 1), (3, 2), (3, 1)]), + ("isles", [(1, 2), (2, 1), (3, 2), (3, 1), (3, 0)]), + ("isis", [(1, 2), (2, 1), (2, 0), (3, 0)]), + ("ish", [(1, 2), (2, 1), (2, 2)]), + ("ia", [(1, 2), (2, 3)]), + ("in", [(1, 2), (1, 1)]), + ("inn", [(1, 2), (1, 1), (0, 1)]), + ("ins", [(1, 2), (1, 1), (2, 1)]), + ("inisle", [(1, 2), (1, 1), (2, 0), (2, 1), (3, 2), (3, 1)]), + ("inhale", [(1, 2), (1, 1), (2, 2), (2, 3), (1, 3), (0, 3)]), + ("inhaler", [(1, 2), (1, 1), (2, 2), (2, 3), (1, 3), (0, 3), (0, 2)]), + ("inhale", [(1, 2), (1, 1), (2, 2), (2, 3), (3, 2), (3, 1)]), + ("inhales", [(1, 2), (1, 1), (2, 2), (2, 3), (3, 2), (3, 1), (2, 1)]), + ("inhales", [(1, 2), (1, 1), (2, 2), (2, 3), (3, 2), (3, 1), (3, 0)]), + ("il", [(1, 2), (1, 3)]), + ("ile", [(1, 2), (1, 3), (0, 3)]), + ("ila", [(1, 2), (1, 3), (2, 3)]), + ("l", [(1, 3)]), + ("le", [(1, 3), (0, 3)]), + ("lei", [(1, 3), (0, 3), (1, 2)]), + ("leis", [(1, 3), (0, 3), (1, 2), (2, 1)]), + ("leiss", [(1, 3), (0, 3), (1, 2), (2, 1), (3, 0)]), + ("ler", [(1, 3), (0, 3), (0, 2)]), + ("lr", [(1, 3), (0, 2)]), + ("la", [(1, 3), (2, 3)]), + ("lai", [(1, 3), (2, 3), (1, 2)]), + ("lair", [(1, 3), (2, 3), (1, 2), (0, 2)]), + ("lain", [(1, 3), (2, 3), (1, 2), (0, 1)]), + ("laisse", [(1, 3), (2, 3), (1, 2), (2, 1), (3, 0), (3, 1)]), + ("lain", [(1, 3), (2, 3), (1, 2), (1, 1)]), + ("lab", [(1, 3), (2, 3), (3, 3)]), + ("lah", [(1, 3), (2, 3), (2, 2)]), + ("lh", [(1, 3), (2, 2)]), + ("lhb", [(1, 3), (2, 2), (3, 3)]), + ("li", [(1, 3), (1, 2)]), + ("lir", [(1, 3), (1, 2), (0, 2)]), + ("lire", [(1, 3), (1, 2), (0, 2), (0, 3)]), + ("lin", [(1, 3), (1, 2), (0, 1)]), + ("linn", [(1, 3), (1, 2), (0, 1), (1, 1)]), + ("linns", [(1, 3), (1, 2), (0, 1), (1, 1), (2, 1)]), + ("linquish", [(1, 3), (1, 2), (0, 1), (1, 0), (2, 0), (2, 1), (2, 2)]), + ("lie", [(1, 3), (1, 2), (0, 3)]), + ("lier", [(1, 3), (1, 2), (0, 3), (0, 2)]), + ("lis", [(1, 3), (1, 2), (2, 1)]), + ("lise", [(1, 3), (1, 2), (2, 1), (3, 1)]), + ("liss", [(1, 3), (1, 2), (2, 1), (3, 0)]), + ("lisle", [(1, 3), (1, 2), (2, 1), (3, 2), (3, 1)]), + ("lisles", [(1, 3), (1, 2), (2, 1), (3, 2), (3, 1), (3, 0)]), + ("lish", [(1, 3), (1, 2), (2, 1), (2, 2)]), + ("liable", [(1, 3), (1, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("lin", [(1, 3), (1, 2), (1, 1)]), + ("linn", [(1, 3), (1, 2), (1, 1), (0, 1)]), + ("lins", [(1, 3), (1, 2), (1, 1), (2, 1)]), + ("linie", [(1, 3), (1, 2), (1, 1), (2, 0), (3, 1)]), + ("linha", [(1, 3), (1, 2), (1, 1), (2, 2), (2, 3)]), + ("linquish", [(1, 3), (1, 2), (1, 1), (1, 0), (2, 0), (2, 1), (2, 2)]), + ("i", [(2, 0)]), + ("in", [(2, 0), (1, 1)]), + ("inn", [(2, 0), (1, 1), (0, 1)]), + ("ins", [(2, 0), (1, 1), (2, 1)]), + ("inhale", [(2, 0), (1, 1), (2, 2), (2, 3), (1, 3), (0, 3)]), + ("inhaler", [(2, 0), (1, 1), (2, 2), (2, 3), (1, 3), (0, 3), (0, 2)]), + ("inhale", [(2, 0), (1, 1), (2, 2), (2, 3), (3, 2), (3, 1)]), + ("inhales", [(2, 0), (1, 1), (2, 2), (2, 3), (3, 2), (3, 1), (2, 1)]), + ("inhales", [(2, 0), (1, 1), (2, 2), (2, 3), (3, 2), (3, 1), (3, 0)]), + ("inisle", [(2, 0), (1, 1), (1, 2), (2, 1), (3, 2), (3, 1)]), + ("inia", [(2, 0), (1, 1), (1, 2), (2, 3)]), + ("inial", [(2, 0), (1, 1), (1, 2), (2, 3), (1, 3)]), + ("inial", [(2, 0), (1, 1), (1, 2), (2, 3), (3, 2)]), + ("is", [(2, 0), (3, 0)]), + ("ise", [(2, 0), (3, 0), (3, 1)]), + ("ie", [(2, 0), (3, 1)]), + ("is", [(2, 0), (2, 1)]), + ("isn", [(2, 0), (2, 1), (1, 1)]), + ("ise", [(2, 0), (2, 1), (3, 1)]), + ("isl", [(2, 0), (2, 1), (3, 2)]), + ("isle", [(2, 0), (2, 1), (3, 2), (3, 1)]), + ("isles", [(2, 0), (2, 1), (3, 2), (3, 1), (3, 0)]), + ("ish", [(2, 0), (2, 1), (2, 2)]), + ("s", [(2, 1)]), + ("sn", [(2, 1), (1, 1)]), + ("snies", [(2, 1), (1, 1), (2, 0), (3, 1), (3, 0)]), + ("snirl", [(2, 1), (1, 1), (1, 2), (0, 2), (1, 3)]), + ("squin", [(2, 1), (1, 0), (2, 0), (1, 1)]), + ("squinnier", [(2, 1), (1, 0), (2, 0), (1, 1), (0, 1), (1, 2), (0, 3), (0, 2)]), + ("si", [(2, 1), (1, 2)]), + ("sir", [(2, 1), (1, 2), (0, 2)]), + ("sire", [(2, 1), (1, 2), (0, 2), (0, 3)]), + ("sin", [(2, 1), (1, 2), (0, 1)]), + ("sie", [(2, 1), (1, 2), (0, 3)]), + ("sier", [(2, 1), (1, 2), (0, 3), (0, 2)]), + ("sia", [(2, 1), (1, 2), (2, 3)]), + ("sial", [(2, 1), (1, 2), (2, 3), (1, 3)]), + ("sial", [(2, 1), (1, 2), (2, 3), (3, 2)]), + ("sin", [(2, 1), (1, 2), (1, 1)]), + ("sinh", [(2, 1), (1, 2), (1, 1), (2, 2)]), + ("sil", [(2, 1), (1, 2), (1, 3)]), + ("sile", [(2, 1), (1, 2), (1, 3), (0, 3)]), + ("se", [(2, 1), (3, 1)]), + ("sei", [(2, 1), (3, 1), (2, 0)]), + ("seis", [(2, 1), (3, 1), (2, 0), (3, 0)]), + ("sel", [(2, 1), (3, 1), (3, 2)]), + ("selah", [(2, 1), (3, 1), (3, 2), (2, 3), (2, 2)]), + ("ss", [(2, 1), (3, 0)]), + ("ssi", [(2, 1), (3, 0), (2, 0)]), + ("sl", [(2, 1), (3, 2)]), + ("sla", [(2, 1), (3, 2), (2, 3)]), + ("slain", [(2, 1), (3, 2), (2, 3), (1, 2), (0, 1)]), + ("slain", [(2, 1), (3, 2), (2, 3), (1, 2), (1, 1)]), + ("slab", [(2, 1), (3, 2), (2, 3), (3, 3)]), + ("si", [(2, 1), (2, 0)]), + ("sin", [(2, 1), (2, 0), (1, 1)]), + ("sinh", [(2, 1), (2, 0), (1, 1), (2, 2)]), + ("sis", [(2, 1), (2, 0), (3, 0)]), + ("sise", [(2, 1), (2, 0), (3, 0), (3, 1)]), + ("sisel", [(2, 1), (2, 0), (3, 0), (3, 1), (3, 2)]), + ("sie", [(2, 1), (2, 0), (3, 1)]), + ("sh", [(2, 1), (2, 2)]), + ("shi", [(2, 1), (2, 2), (1, 2)]), + ("shirl", [(2, 1), (2, 2), (1, 2), (0, 2), (1, 3)]), + ("shire", [(2, 1), (2, 2), (1, 2), (0, 2), (0, 3)]), + ("shin", [(2, 1), (2, 2), (1, 2), (0, 1)]), + ("shinnies", [(2, 1), (2, 2), (1, 2), (0, 1), (1, 1), (2, 0), (3, 1), (3, 0)]), + ("shiel", [(2, 1), (2, 2), (1, 2), (0, 3), (1, 3)]), + ("shier", [(2, 1), (2, 2), (1, 2), (0, 3), (0, 2)]), + ("shia", [(2, 1), (2, 2), (1, 2), (2, 3)]), + ("shin", [(2, 1), (2, 2), (1, 2), (1, 1)]), + ("she", [(2, 1), (2, 2), (3, 1)]), + ("shes", [(2, 1), (2, 2), (3, 1), (3, 0)]), + ("shel", [(2, 1), (2, 2), (3, 1), (3, 2)]), + ("shela", [(2, 1), (2, 2), (3, 1), (3, 2), (2, 3)]), + ("sha", [(2, 1), (2, 2), (2, 3)]), + ("shale", [(2, 1), (2, 2), (2, 3), (1, 3), (0, 3)]), + ("shalier", [(2, 1), (2, 2), (2, 3), (1, 3), (1, 2), (0, 3), (0, 2)]), + ("shai", [(2, 1), (2, 2), (2, 3), (1, 2)]), + ("shairn", [(2, 1), (2, 2), (2, 3), (1, 2), (0, 2), (1, 1)]), + ("shairn", [(2, 1), (2, 2), (2, 3), (1, 2), (0, 2), (0, 1)]), + ("shab", [(2, 1), (2, 2), (2, 3), (3, 3)]), + ("shale", [(2, 1), (2, 2), (2, 3), (3, 2), (3, 1)]), + ("shales", [(2, 1), (2, 2), (2, 3), (3, 2), (3, 1), (3, 0)]), + ("h", [(2, 2)]), + ("hi", [(2, 2), (1, 2)]), + ("hir", [(2, 2), (1, 2), (0, 2)]), + ("hire", [(2, 2), (1, 2), (0, 2), (0, 3)]), + ("hin", [(2, 2), (1, 2), (0, 1)]), + ("hinnies", [(2, 2), (1, 2), (0, 1), (1, 1), (2, 0), (3, 1), (2, 1)]), + ("hinnies", [(2, 2), (1, 2), (0, 1), (1, 1), (2, 0), (3, 1), (3, 0)]), + ("hie", [(2, 2), (1, 2), (0, 3)]), + ("his", [(2, 2), (1, 2), (2, 1)]), + ("hisn", [(2, 2), (1, 2), (2, 1), (1, 1)]), + ("hiss", [(2, 2), (1, 2), (2, 1), (3, 0)]), + ("hissel", [(2, 2), (1, 2), (2, 1), (3, 0), (3, 1), (3, 2)]), + ("hisis", [(2, 2), (1, 2), (2, 1), (2, 0), (3, 0)]), + ("hia", [(2, 2), (1, 2), (2, 3)]), + ("hin", [(2, 2), (1, 2), (1, 1)]), + ("hins", [(2, 2), (1, 2), (1, 1), (2, 1)]), + ("hile", [(2, 2), (1, 2), (1, 3), (0, 3)]), + ("hila", [(2, 2), (1, 2), (1, 3), (2, 3)]), + ("hl", [(2, 2), (1, 3)]), + ("hler", [(2, 2), (1, 3), (0, 3), (0, 2)]), + ("hl", [(2, 2), (3, 2)]), + ("he", [(2, 2), (3, 1)]), + ("hes", [(2, 2), (3, 1), (2, 1)]), + ("hei", [(2, 2), (3, 1), (2, 0)]), + ("hein", [(2, 2), (3, 1), (2, 0), (1, 1)]), + ("heinie", [(2, 2), (3, 1), (2, 0), (1, 1), (1, 2), (0, 3)]), + ("hes", [(2, 2), (3, 1), (3, 0)]), + ("hel", [(2, 2), (3, 1), (3, 2)]), + ("hb", [(2, 2), (3, 3)]), + ("hs", [(2, 2), (2, 1)]), + ("hsi", [(2, 2), (2, 1), (1, 2)]), + ("hsi", [(2, 2), (2, 1), (2, 0)]), + ("ha", [(2, 2), (2, 3)]), + ("hal", [(2, 2), (2, 3), (1, 3)]), + ("hale", [(2, 2), (2, 3), (1, 3), (0, 3)]), + ("haler", [(2, 2), (2, 3), (1, 3), (0, 3), (0, 2)]), + ("hair", [(2, 2), (2, 3), (1, 2), (0, 2)]), + ("haire", [(2, 2), (2, 3), (1, 2), (0, 2), (0, 3)]), + ("hain", [(2, 2), (2, 3), (1, 2), (0, 1)]), + ("hain", [(2, 2), (2, 3), (1, 2), (1, 1)]), + ("hail", [(2, 2), (2, 3), (1, 2), (1, 3)]), + ("hailer", [(2, 2), (2, 3), (1, 2), (1, 3), (0, 3), (0, 2)]), + ("hab", [(2, 2), (2, 3), (3, 3)]), + ("hable", [(2, 2), (2, 3), (3, 3), (3, 2), (3, 1)]), + ("hal", [(2, 2), (2, 3), (3, 2)]), + ("hals", [(2, 2), (2, 3), (3, 2), (2, 1)]), + ("halse", [(2, 2), (2, 3), (3, 2), (2, 1), (3, 1)]), + ("hale", [(2, 2), (2, 3), (3, 2), (3, 1)]), + ("hales", [(2, 2), (2, 3), (3, 2), (3, 1), (2, 1)]), + ("hales", [(2, 2), (2, 3), (3, 2), (3, 1), (3, 0)]), + ("a", [(2, 3)]), + ("al", [(2, 3), (1, 3)]), + ("ale", [(2, 3), (1, 3), (0, 3)]), + ("alin", [(2, 3), (1, 3), (1, 2), (0, 1)]), + ("alish", [(2, 3), (1, 3), (1, 2), (2, 1), (2, 2)]), + ("alin", [(2, 3), (1, 3), (1, 2), (1, 1)]), + ("ai", [(2, 3), (1, 2)]), + ("air", [(2, 3), (1, 2), (0, 2)]), + ("airn", [(2, 3), (1, 2), (0, 2), (1, 1)]), + ("airns", [(2, 3), (1, 2), (0, 2), (1, 1), (2, 1)]), + ("airn", [(2, 3), (1, 2), (0, 2), (0, 1)]), + ("aire", [(2, 3), (1, 2), (0, 2), (0, 3)]), + ("ain", [(2, 3), (1, 2), (0, 1)]), + ("ainu", [(2, 3), (1, 2), (0, 1), (0, 0)]), + ("aiel", [(2, 3), (1, 2), (0, 3), (1, 3)]), + ("ais", [(2, 3), (1, 2), (2, 1)]), + ("aisle", [(2, 3), (1, 2), (2, 1), (3, 2), (3, 1)]), + ("aisles", [(2, 3), (1, 2), (2, 1), (3, 2), (3, 1), (3, 0)]), + ("ain", [(2, 3), (1, 2), (1, 1)]), + ("ainu", [(2, 3), (1, 2), (1, 1), (0, 0)]), + ("ains", [(2, 3), (1, 2), (1, 1), (2, 1)]), + ("ail", [(2, 3), (1, 2), (1, 3)]), + ("aile", [(2, 3), (1, 2), (1, 3), (0, 3)]), + ("ab", [(2, 3), (3, 3)]), + ("abl", [(2, 3), (3, 3), (3, 2)]), + ("able", [(2, 3), (3, 3), (3, 2), (3, 1)]), + ("ables", [(2, 3), (3, 3), (3, 2), (3, 1), (2, 1)]), + ("ables", [(2, 3), (3, 3), (3, 2), (3, 1), (3, 0)]), + ("al", [(2, 3), (3, 2)]), + ("als", [(2, 3), (3, 2), (2, 1)]), + ("ale", [(2, 3), (3, 2), (3, 1)]), + ("ales", [(2, 3), (3, 2), (3, 1), (2, 1)]), + ("ales", [(2, 3), (3, 2), (3, 1), (3, 0)]), + ("alb", [(2, 3), (3, 2), (3, 3)]), + ("ah", [(2, 3), (2, 2)]), + ("ahi", [(2, 3), (2, 2), (1, 2)]), + ("ahir", [(2, 3), (2, 2), (1, 2), (0, 2)]), + ("ahs", [(2, 3), (2, 2), (2, 1)]), + ("s", [(3, 0)]), + ("si", [(3, 0), (2, 0)]), + ("sin", [(3, 0), (2, 0), (1, 1)]), + ("sins", [(3, 0), (2, 0), (1, 1), (2, 1)]), + ("sinh", [(3, 0), (2, 0), (1, 1), (2, 2)]), + ("sinhs", [(3, 0), (2, 0), (1, 1), (2, 2), (2, 1)]), + ("sie", [(3, 0), (2, 0), (3, 1)]), + ("sis", [(3, 0), (2, 0), (2, 1)]), + ("sisi", [(3, 0), (2, 0), (2, 1), (1, 2)]), + ("sise", [(3, 0), (2, 0), (2, 1), (3, 1)]), + ("sisel", [(3, 0), (2, 0), (2, 1), (3, 1), (3, 2)]), + ("sish", [(3, 0), (2, 0), (2, 1), (2, 2)]), + ("ss", [(3, 0), (2, 1)]), + ("ssi", [(3, 0), (2, 1), (1, 2)]), + ("ssi", [(3, 0), (2, 1), (2, 0)]), + ("se", [(3, 0), (3, 1)]), + ("sesqui", [(3, 0), (3, 1), (2, 1), (1, 0), (2, 0)]), + ("sesia", [(3, 0), (3, 1), (2, 1), (1, 2), (2, 3)]), + ("sei", [(3, 0), (3, 1), (2, 0)]), + ("seis", [(3, 0), (3, 1), (2, 0), (2, 1)]), + ("seisin", [(3, 0), (3, 1), (2, 0), (2, 1), (1, 2), (0, 1)]), + ("seisin", [(3, 0), (3, 1), (2, 0), (2, 1), (1, 2), (1, 1)]), + ("sel", [(3, 0), (3, 1), (3, 2)]), + ("sels", [(3, 0), (3, 1), (3, 2), (2, 1)]), + ("selah", [(3, 0), (3, 1), (3, 2), (2, 3), (2, 2)]), + ("selahs", [(3, 0), (3, 1), (3, 2), (2, 3), (2, 2), (2, 1)]), + ("e", [(3, 1)]), + ("es", [(3, 1), (2, 1)]), + ("ess", [(3, 1), (2, 1), (3, 0)]), + ("eshin", [(3, 1), (2, 1), (2, 2), (1, 2), (0, 1)]), + ("eshin", [(3, 1), (2, 1), (2, 2), (1, 2), (1, 1)]), + ("eh", [(3, 1), (2, 2)]), + ("es", [(3, 1), (3, 0)]), + ("ess", [(3, 1), (3, 0), (2, 1)]), + ("essie", [(3, 1), (3, 0), (2, 1), (1, 2), (0, 3)]), + ("el", [(3, 1), (3, 2)]), + ("elhi", [(3, 1), (3, 2), (2, 2), (1, 2)]), + ("els", [(3, 1), (3, 2), (2, 1)]), + ("elsin", [(3, 1), (3, 2), (2, 1), (1, 2), (0, 1)]), + ("elsin", [(3, 1), (3, 2), (2, 1), (1, 2), (1, 1)]), + ("elsin", [(3, 1), (3, 2), (2, 1), (2, 0), (1, 1)]), + ("elshin", [(3, 1), (3, 2), (2, 1), (2, 2), (1, 2), (0, 1)]), + ("elshin", [(3, 1), (3, 2), (2, 1), (2, 2), (1, 2), (1, 1)]), + ("ela", [(3, 1), (3, 2), (2, 3)]), + ("elain", [(3, 1), (3, 2), (2, 3), (1, 2), (0, 1)]), + ("elain", [(3, 1), (3, 2), (2, 3), (1, 2), (1, 1)]), + ("elains", [(3, 1), (3, 2), (2, 3), (1, 2), (1, 1), (2, 1)]), + ("elb", [(3, 1), (3, 2), (3, 3)]), + ("l", [(3, 2)]), + ("lh", [(3, 2), (2, 2)]), + ("lhb", [(3, 2), (2, 2), (3, 3)]), + ("ls", [(3, 2), (2, 1)]), + ("la", [(3, 2), (2, 3)]), + ("lai", [(3, 2), (2, 3), (1, 2)]), + ("lair", [(3, 2), (2, 3), (1, 2), (0, 2)]), + ("lain", [(3, 2), (2, 3), (1, 2), (0, 1)]), + ("laisse", [(3, 2), (2, 3), (1, 2), (2, 1), (3, 0), (3, 1)]), + ("lain", [(3, 2), (2, 3), (1, 2), (1, 1)]), + ("lab", [(3, 2), (2, 3), (3, 3)]), + ("lah", [(3, 2), (2, 3), (2, 2)]), + ("le", [(3, 2), (3, 1)]), + ("les", [(3, 2), (3, 1), (2, 1)]), + ("less", [(3, 2), (3, 1), (2, 1), (3, 0)]), + ("lei", [(3, 2), (3, 1), (2, 0)]), + ("leis", [(3, 2), (3, 1), (2, 0), (3, 0)]), + ("leiss", [(3, 2), (3, 1), (2, 0), (3, 0), (2, 1)]), + ("leis", [(3, 2), (3, 1), (2, 0), (2, 1)]), + ("leiss", [(3, 2), (3, 1), (2, 0), (2, 1), (3, 0)]), + ("lehi", [(3, 2), (3, 1), (2, 2), (1, 2)]), + ("les", [(3, 2), (3, 1), (3, 0)]), + ("less", [(3, 2), (3, 1), (3, 0), (2, 1)]), + ("lessn", [(3, 2), (3, 1), (3, 0), (2, 1), (1, 1)]), + ("lb", [(3, 2), (3, 3)]), + ("b", [(3, 3)]), + ("ba", [(3, 3), (2, 3)]), + ("bal", [(3, 3), (2, 3), (1, 3)]), + ("bale", [(3, 3), (2, 3), (1, 3), (0, 3)]), + ("balei", [(3, 3), (2, 3), (1, 3), (0, 3), (1, 2)]), + ("baleise", [(3, 3), (2, 3), (1, 3), (0, 3), (1, 2), (2, 1), (3, 1)]), + ("baler", [(3, 3), (2, 3), (1, 3), (0, 3), (0, 2)]), + ("balr", [(3, 3), (2, 3), (1, 3), (0, 2)]), + ("bali", [(3, 3), (2, 3), (1, 3), (1, 2)]), + ("bai", [(3, 3), (2, 3), (1, 2)]), + ("bairn", [(3, 3), (2, 3), (1, 2), (0, 2), (1, 1)]), + ("bairns", [(3, 3), (2, 3), (1, 2), (0, 2), (1, 1), (2, 1)]), + ("bairnie", [(3, 3), (2, 3), (1, 2), (0, 2), (1, 1), (2, 0), (3, 1)]), + ("bairnish", [(3, 3), (2, 3), (1, 2), (0, 2), (1, 1), (2, 0), (2, 1), (2, 2)]), + ("bairn", [(3, 3), (2, 3), (1, 2), (0, 2), (0, 1)]), + ("bain", [(3, 3), (2, 3), (1, 2), (0, 1)]), + ("bais", [(3, 3), (2, 3), (1, 2), (2, 1)]), + ("bain", [(3, 3), (2, 3), (1, 2), (1, 1)]), + ("bainie", [(3, 3), (2, 3), (1, 2), (1, 1), (2, 0), (3, 1)]), + ("bail", [(3, 3), (2, 3), (1, 2), (1, 3)]), + ("baile", [(3, 3), (2, 3), (1, 2), (1, 3), (0, 3)]), + ("bailer", [(3, 3), (2, 3), (1, 2), (1, 3), (0, 3), (0, 2)]), + ("bal", [(3, 3), (2, 3), (3, 2)]), + ("bals", [(3, 3), (2, 3), (3, 2), (2, 1)]), + ("bale", [(3, 3), (2, 3), (3, 2), (3, 1)]), + ("bales", [(3, 3), (2, 3), (3, 2), (3, 1), (2, 1)]), + ("balei", [(3, 3), (2, 3), (3, 2), (3, 1), (2, 0)]), + ("bales", [(3, 3), (2, 3), (3, 2), (3, 1), (3, 0)]), + ("bah", [(3, 3), (2, 3), (2, 2)]), + ("bhil", [(3, 3), (2, 2), (1, 2), (1, 3)]), + ("bl", [(3, 3), (3, 2)]), + ("bls", [(3, 3), (3, 2), (2, 1)]), + ("blair", [(3, 3), (3, 2), (2, 3), (1, 2), (0, 2)]), + ("blain", [(3, 3), (3, 2), (2, 3), (1, 2), (0, 1)]), + ("blain", [(3, 3), (3, 2), (2, 3), (1, 2), (1, 1)]), + ("blains", [(3, 3), (3, 2), (2, 3), (1, 2), (1, 1), (2, 1)]), + ("blah", [(3, 3), (3, 2), (2, 3), (2, 2)]), + ("blahs", [(3, 3), (3, 2), (2, 3), (2, 2), (2, 1)]), + ("bless", [(3, 3), (3, 2), (3, 1), (2, 1), (3, 0)]), + ("bless", [(3, 3), (3, 2), (3, 1), (3, 0), (2, 1)]), ] # ----------------------------------------------------- @@ -130,11 +860,9 @@ def found_words_4(tree_4): def test_word_count_4_board_4x4_max(expected_words_max_4, tree_4): assert len(expected_words_max_4) == sum(map(lambda x: len(x.word_paths), tree_4.values())) -def test_words_full_4_board_4x4_max(expected_words_max_4, found_words_4, tree_4): - found_words = [x.word_paths for x in tree_4.values()] - for letter, subtree in tree_4.items(): - for i in range(0, min(len(expected_words_max_4), len(found_words_4))): - assert expected_words_max_4[i] == found_words_4[i][0] +def test_words_full_4_board_4x4_max(expected_words_max_4, found_words_4): + """Verify words and paths match in exact order""" + assert found_words_4 == expected_words_max_4 def test_format_words_4_to_csv(): pass @@ -164,11 +892,8 @@ def found_words_20(tree_20): def test_word_count_20_board_4x4_max(expected_words_max_20, tree_20): assert len(expected_words_max_20) == sum(map(lambda x: len(x.word_paths), tree_20.values())) -def test_words_full_20_board_4x4_max(expected_words_max_20, found_words_20, tree_20): - found_words = [x.word_paths for x in tree_20.values()] - for letter, subtree in tree_20.items(): - for i in range(0, min(len(expected_words_max_20), len(found_words_20))): - assert expected_words_max_20[i] == found_words_20[i][0] +def test_words_full_20_board_4x4_max(expected_words_max_20, found_words_20): + assert found_words_20 == expected_words_max_20 def test_format_words_20_to_csv(): pass