[Tutor] anagram solving algorithm

Danny Yoo dyoo at hkn.eecs.berkeley.edu
Wed Sep 29 20:44:25 CEST 2004



On Wed, 29 Sep 2004, Max Russell wrote:

> Hello here is a breakdown of an algorithm I'm using to write my own
> anagram solver:

[text cut]

> My problem here is that it how to structure looking at each possibe word
> in the list: how to set up the loop for that, also how to do the
> sort/inspection of each word.


Hi Max,

It sounds like you want to run a 'for' loop across every word in your
wordlist.


Here's an example of a for loop, just so you get the idea of what it can
do:

###
>>> def isEven(x):
...     return x % 2 == 0
...
>>> numbers = [3, 1, 4, 1, 5, 9, 2, 6]
>>> for n in numbers:
...     print "I'm looking at", n
...     if isEven(n):
...         print n, "is even"
...     else:
...         print n, "is odd"
...
I'm looking at 3
3 is odd
I'm looking at 1
1 is odd
I'm looking at 4
4 is even
I'm looking at 1
1 is odd
I'm looking at 5
5 is odd
I'm looking at 9
9 is odd
I'm looking at 2
2 is even
I'm looking at 6
6 is even
###


For more examples of loops, take a look at a tutorial like Alan's:

    http://www.freenetpages.co.uk/hp/alan.gauld/tutloops.htm


There are two kinds of loops in Python:

    1.  for   --- good for going across sequences.

    2.  while --- good for repeating something until some condition
                  changes.


'for' can go across lists easily, so it's a good tool here.  You can loop
across a list with 'while' too, but it's not so idiomatic.


Just as a last note: there's a very clever way to solve the anagram
problem, and it does involve sorting.  But let's see try to get your first
solution working: we can talk about the clever approach later.  *grin*


Good luck to you!



More information about the Tutor mailing list