Iteration

Frank Buss fb at frank-buss.de
Tue Aug 27 20:44:42 CEST 2002


"Jon Cosby" <jcosby at mindspring.com> wrote:

> I want to extend this to any size, but I'm having problems with
> iteration. Part of the code goes like this:

Looks very complicated. I'm a Python newbie (not a programmer newbie :-), 
so perhaps someone can correct my code, if it is not Python-like, but you 
can write it with a recursive function:

from string import strip
import random
import sys

# set size
global size, current, words
size = 3

# read words
words = []
for line in open('dict.txt', 'r').readlines():
  line = strip(line)
  if len(line) == size:
    words.append(line)
if len(words) == 0:
  print 'No words found with', size, 'characters'
  sys.exit()

# init globals  
current = size * [[]]
testWord = size * ' '

# recursive test function
def iterate(index):
  if index < size:
    for word in words:
      current[index] = word
      iterate(index + 1)
  else:
    for column in range(0, size):
      word = ''
      for row in range(0, size):
        word += current[row][column]
      if word not in words: return
    print "solution found:"
    for row in range(0, size): print current[row]
    print

# search all squares
iterate(0)

This code prints all possible squares of a given size. But it could be 
very time consuming: numberOfWords^size. If you have 1000 words and size 4 
it would take 1,000,000,000,000 iterations, so it would take 11 days, if 
your computer can check 1 squares per second. But it will be much faster, 
if you set the first word.

-- 
Frank Buß, fb at frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de



More information about the Python-list mailing list