In [7]:
tiles = """
abl ace adj aer ara art ase ave ban bar bas ble
bri buk che cme cnt coo dct dep der des dge
dim dle ent ent erp etm ewe gai gre gri gts ham
hit hod hyp ifi ign ile inc ing ini ino inv itc
ker ket men mic nae nch nee nin non ome ore
pal ran rdi res roo rry sch sci she sys taa tau
tcr ted tem tep ter tst ust ver was wat
"""
In [4]:
import forge
from data import warehouse
from puzzle.puzzlepedia import prod_config
prod_config.init()
trie = warehouse.get('/words/unigram/trie')
In [5]:
import re
from data.seek_sets import chain_seek_set
In [89]:
def walk(seek_set, acc, targets, pos=0):
if pos >= len(targets):
yield ' '.join(acc)
return
target = targets[pos]
seek_set.set_length(target)
for result, weight in trie.walk(seek_set, exact_match=True):
#if weight < 5e4:
# break
acc.append(result)
yield from walk(seek_set[result:], acc, targets, pos+1)
acc.pop()
def process(tiles, targets):
#print(tiles + ['a'])
found = set()
for c in 'abcdefghijklmnopqrstuvwxyz':
seek_set = chain_seek_set.ChainSeekSet(inject(tiles, c), sum(targets))
for result in walk(seek_set, [], targets):
if result in found:
continue
print(result)
found.add(result)
def inject(tiles, c):
result = [c]
for t in tiles:
result.append(t)
result.append(c + t[0] + t[1] + t[2])
result.append(t[0] + c + t[1] + t[2])
result.append(t[0] + t[1] + c + t[2])
return result
def parse(s):
parts = s.split(' ')
result = []
for p in parts:
p = p.strip('’,;.‘^!-*')
if p:
result.append(int(p))
return result
In [93]:
tiles = """
abl ace adj aer ara art ase ave ban bar bas ble
bri buk che cme cnt coo dct dep der des dge
dim dle ent ent erp etm ewe gai gre gri gts ham
hit hod hyp ifi ign ile inc ing ini ino inv itc
ker ket men mic nae nch nee nin non ome ore
pal ran rdi res roo rry sch sci she sys taa tau
tcr ted tem tep ter tst ust ver was wat
"""
tiles = """
aer ave bas
dct
dim
ini
ket
she
tep was
"""
process(tiles.split(), [10, 6])
In [70]:
print("""
abl ace adj aer ara art ase ave ban bar bas ble
bri buk che cme cnt coo dct dep der des dge
dim dle ent ent erp etm ewe gai gre gri gts ham
hit hod hyp ifi ign ile inc ing ini ino inv itc
ker ket men mic nae nch nee nin non ome ore
pal ran rdi res roo rry sch sci she sys taa tau
tcr ted tem tep ter tst ust ver was wat
""".replace(' ', '\t'))
In [ ]: