Hi Sai krishna,

I recently wrote a program that does something similar to what you want. If you are familiar with the game text-twist, I wrote up a "solver" that will untwist any word by generating all possible combinations and then checking against a dictionary. To be honest, I had a little help from the internet for the permute function. Below is the code.

To address your question, when you find yourself doing something like if 1, ..., if 2, ... ..., if 3, ... ... ..., you probably want to use recursion, which is what my permute function uses below. The whole point of programming is to make the computer do all the repetition, not you, the programmer in copy and pasting and changing! Hope this helps!

Regards,
Vivek


#!/usr/bin/env python
import sys
import os
import commands
import random

if len(sys.argv) == 1:
  print "Usage: "+sys.argv[0]+" word [len]"
  exit()

word = sys.argv[1].lower()
if len(sys.argv) == 2:
  n = len(word)
else:
  n = int(sys.argv[2])

a = []
for i in range(len(word)):
  a.append(word[i])

def permute(seq):
  if len(seq) <= 1:
    yield seq
  else:
    for i in xrange(0,len(seq)):
      for tail in permute( seq[:i] + seq[i+1:] ):
        yield [ seq[i] ] + tail

# Load dict in memory
dict = {}
infile = open("wordlist.txt", "r")
for t in infile.readlines():
  dict[t.rstrip()] = 1

printed_words = []

for o in permute(a):
  possible_string = ''.join(o)
  possible_word = possible_string[:n]
  if dict.has_key(possible_word):
    if possible_word in printed_words:
      continue
    else:
      printed_words.append(possible_word)
      print possible_word



On Jul 29, 2008, at 5:50 PM, sai krishna wrote:


Hi,everyone.
My name is Sai krishna, and I'm new to Python as well as Programming.

I wanted to print out all the combinations of a given word.
I am doing it this way:

n='cat'
def arrange(n):
if len(n)==1: #length of word is 1
    print n
elif len(n)==2: # length of word is 2
    print n[0]+n[1]
    print n[1]+n[0]
elif len(n)==3:
    print n[0]+n[1]+n[2]
    print n[0]+n[2]+n[1]
    print n[1]+n[0]+n[2]
    print n[1]+n[2]+n[0]
    print n[2]+n[0]+n[1]
    print n[2]+n[1]+n[0]

This process is quite lengthy, and I have managed to do this for word containing 5 letters,i,e.,120 combinations
Is there a better way?
Please help.

--
cheers!!!
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to