This article has been dead for over three months
You
## my solution for all anagrams
from time import clock
import os,sys
dictionary = 'list.txt'
takeout=' \t\'-+\n\r' ## deleted letters from words
## choosing first argument for translate
if sys.version[:3]>='2.6':
table=None #python 2.6 or higher
else:
print 'Old python'
table=''
for i in range(256): t+=chr(i)
def letters(a):
let=''.join(sorted(a))
let = let.translate(table,takeout)
return let
def writeout(inp,out):
words= [w.rstrip() for w in open(inp)]
words=[letters(a)+' '+a for a in words]
words.sort(key=len)
open(out,'w').write('\n'.join(words))
def getanawords(aw='anawords.txt',al='analist.txt'):
if not os.path.isfile(aw) and not os.path.isfile(al): writeout(inp=dictionary,out=al)
anawords=dict()
if not os.path.isfile(aw):
for l,w in [j.split() for j in open(al)]:
if l in anawords: anawords[l].append(w)
else: anawords[l]=[w]
print "Dict prepared in %1.3f s" % (clock()-t)
f=open(aw,'w')
for i in sorted(anawords,key=len):
f.write(i+' '+' '.join(anawords[(i)])+'\n')
print "Dict saved for future"
else:
for i in open(aw):
i=i.rstrip().split()
anawords[i[0]]=i[1:]
print "Saved dict loaded"
return anawords
if __name__=="__main__":
## listing all words
t=clock()
anawords=getanawords()
print "Preparations took %1.3f s" % (clock()-t)
print "To stop: enter empty line"
while True:
i=raw_input('Give word: ')
t=clock()
i=letters(i)
if i :
if i in anawords: print anawords[i]
else: print 'Word is not in vocabulary'
print '%i ms' % ((clock()-t)*1000)
else: break