Skip to content

Instantly share code, notes, and snippets.

@vedantk
Created December 29, 2011 07:43
Show Gist options
  • Save vedantk/1532736 to your computer and use it in GitHub Desktop.
Save vedantk/1532736 to your computer and use it in GitHub Desktop.
Bananagramatron
'''
>>> find('rage')
{'ager', 'gear', 'rage'}
>>> find('lascivious')
{'viscus', 'salvo', 'ciao', 'souls', 'lacs', 'ovisac', 'clavi', 'lasso', 'ovals', 'laics', 'solus', 'vail', 'ulvas', 'voila', 'cusso', 'assoil', 'ossa', 'cuss', 'sauls', 'iliac', 'cols', 'vails', 'sialic', 'silo', 'loss', 'ulva', 'louis', 'colas', 'salvos', 'saul', 'visuals', 'salic', 'ovisacs', 'ascus', 'coss', 'ails', 'cilia', 'sail', 'sous', 'laic', 'aviso', 'oculi', 'viol', 'vaus', 'avos', 'caulis', 'sola', 'aioli', 'oasis', 'sols', 'lass', 'vacs', 'cauls', 'cola', 'cavils', 'soli', 'civil', 'aiolis', 'sials', 'locus', 'sacs', 'oval', 'silva', 'sisal', 'casus', 'clivia', 'vials', 'visas', 'ocas', 'calo', 'viscous', 'silvas', 'avisos', 'silicas', 'clavus', 'oils', 'visual', 'coulis', 'asci', 'luvs', 'clivias', 'sial', 'socials', 'vial', 'coals', 'soul', 'vocal', 'ossia', 'vocals', 'silvics', 'loca', 'soil', 'loci', 'aulic', 'soils', 'ilia', 'viols', 'oscula', 'silos', 'violas', 'sics', 'also', 'viola', 'sails', 'lavs', 'cavil', 'coils', 'social', 'vicious', 'visa', 'coil', 'class', 'silica', 'caul', 'coal', 'sals', 'sulci'}
'''
import itertools
with open("dict.txt", "r") as f:
words = set((wd for wd in f.read().split() if len(wd) >= 4))
def find(pool):
opts = itertools.chain(*[
itertools.permutations(pool, k) for k in range(len(pool), 3, -1)
])
sstream = (''.join(li) for li in opts)
return set((wd for wd in sstream if wd in words))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment