View difference between Paste ID: 1QvTwvCq and EecGcsVB
SHOW: | | - or go back to the newest paste.
1
import urllib2
2
parent_word=raw_input('What parent word should I use? >> ')
3
llen=len(parent_word)
4
5
def index_inc(index_list):
6
     for index in range(len(index_list)):
7
          if index_list[-(index+1)]<llen-index-1:
8
               index_list[-(index+1)]+=1
9
               for i in range(index): #At least one problem is here
10
                    index_list[-(index-i)] = index_list[-(index+1)]+i+1
11
               break
12
     return index_list
13
14
def generate_word(index_list):
15
  ###Given a list of indices, returns the corresponding sub-word
16
  return reduce(lambda x, y: x+y, [parent_word[i] for i in index_list])
17
18
def find_words(length):
19
  ###This finds all sub-words of the parent word
20
  word_list=[]
21
  index_list=[]
22
  for i in range(length):
23
    index_list.append(i)
24
  while index_list[0] != llen - len(index_list):
25
    word_list.append(generate_word(index_list))
26
    index_list = index_inc(index_list)
27
  return word_list
28
  
29
###Now do stuff
30
31
print 'Getting word list...'
32
words=urllib2.urlopen('http://www.puzzlers.org/pub/wordlists/enable1.txt').readlines()
33
words=[word[:-1] for word in words]
34
35
word_list=[]
36
for length in range(llen):
37
  print 'Finding prospective words of length '+str(length+1)
38
  word_list+=find_words(length+1)
39
40
genuine_word_list=[]
41
42
print 'We have '+str(len(word_list))+' possible words...'
43
print 'Testing words for genuineness...'
44
for word_number in range(len(word_list)):
45
  if word_number % 1000 == 0 and word_number > 0:
46
    print 'Testing word number '+str(word_number)
47
  if word_list[word_number] in words and word_list[word_number] not in genuine_word_list:
48
    genuine_word_list.append(word_list[word_number])
49
genuine_word_list.append(parent_word)
50
51
print 'There are '+str(len(genuine_word_list))+' such words:\n'
52-
print genuine_word_list
52+
print genuine_word_list
53
print '[Press Enter to close]'
54
wait_to_exit = raw_input()