# 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

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

```