Mercurial > hg > config
comparison python/anagram.py @ 896:83618049c2ff
py3
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Fri, 11 Feb 2022 09:33:38 -0800 |
parents | 4096771c8b9f |
children |
comparison
equal
deleted
inserted
replaced
895:8d3df8c0c730 | 896:83618049c2ff |
---|---|
23 return ''.join(string2) | 23 return ''.join(string2) |
24 | 24 |
25 def anagramize(theword, wordlist, level=0): | 25 def anagramize(theword, wordlist, level=0): |
26 | 26 |
27 if 0: | 27 if 0: |
28 print '%s%s : %s' % ('-' * level, theword, wordlist) | 28 print('%s%s : %s' % ('-' * level, theword, wordlist)) |
29 | 29 |
30 anagrams = [] | 30 anagrams = [] |
31 | 31 |
32 # start the search with a new word | 32 # start the search with a new word |
33 for index in range(len(wordlist)): | 33 for index in range(len(wordlist)): |
47 | 47 |
48 if subgram is not None: | 48 if subgram is not None: |
49 anagrams += [ ' '.join((word, i)) for i in subgram ] | 49 anagrams += [ ' '.join((word, i)) for i in subgram ] |
50 | 50 |
51 if 0: | 51 if 0: |
52 print '%s%s returning %s' % ('-' * level, theword, anagrams) | 52 print('%s%s returning %s' % ('-' * level, theword, anagrams)) |
53 | 53 |
54 if anagrams: | 54 if anagrams: |
55 return anagrams | 55 return anagrams |
56 return None | 56 return None |
57 | 57 |
58 if __name__ == '__main__': | 58 if __name__ == '__main__': |
59 import sys | 59 import sys |
60 from optparse import OptionParser | 60 from optparse import OptionParser |
61 | 61 |
62 parser = OptionParser() | 62 parser = OptionParser() |
73 for i in dicts: | 73 for i in dicts: |
74 if os.path.exists(i): | 74 if os.path.exists(i): |
75 options.filename = i | 75 options.filename = i |
76 break | 76 break |
77 else: | 77 else: |
78 print 'Dictionary not found' | 78 print('Dictionary not found') |
79 parser.print_help() | 79 parser.print_help() |
80 sys.exit(1) | 80 sys.exit(1) |
81 | 81 |
82 if not args: | 82 if not args: |
83 print 'please provide an anagram' | 83 print('please provide an anagram') |
84 sys.exit(0) | 84 sys.exit(0) |
85 | 85 |
86 f = file(options.filename, 'r') | 86 with open(options.filename, 'r') as f: |
87 read_dictionary(f) | 87 read_dictionary(f) |
88 | 88 |
89 # XXX could cleanup | 89 # XXX could cleanup |
90 anagram = ' '.join(args) | 90 anagram = ' '.join(args) |
91 anagram = ''.join(anagram.split()).lower() | 91 anagram = ''.join(anagram.split()).lower() |
92 | 92 |
93 # don't use letter names | 93 # don't use letter names |
94 dictionary = [ i for i in dictionary if (len(i) > 1) or i in 'ai' ] | 94 dictionary = [ i for i in dictionary if (len(i) > 1) or i in 'ai' ] |
95 | 95 |
96 wordlist = [ i for i in dictionary | 96 wordlist = [ i for i in dictionary |
97 if i and is_in(i, anagram) is not None ] | 97 if i and is_in(i, anagram) is not None ] |
98 | 98 |
99 anagrams = anagramize(anagram, wordlist) | 99 anagrams = anagramize(anagram, wordlist) |
100 | 100 |
101 if anagrams: | 101 if anagrams: |
102 print '\n'.join(anagrams) | 102 print('\n'.join(anagrams)) |