Re: Permutation function

new topic     » goto parent     » topic index » view thread      » older message » newer message

I have a funky bit of code at home (at work now) that can find words that 
can be made from a given sequence of letters.
That uses a permutation function of sorts. What is this function wanted for?

I remember the first way I went about doing things was to generate a 
permutation, then try and match it to the dictionary. This is *NOT* a good 
way of doing things. The number of permutations to word length ramps up VERY 
quickly. if you have a 15 length sequence, there are roughly 100 billion 
permutations. Not good.

I'm assuming you're not generating permutations for the fun of it. Perhaps 
you can tell us what this permutation function is for?
=====================================================
.______<-------------------\__
/ _____<--------------------__|===
||_    <-------------------/
\__| Mr Trick





>From: thomas at columbus.rr.com
>Reply-To: EUforum at topica.com
>To: EUforum <EUforum at topica.com>
>Subject: Permutation function
>Date: Tue, 12 Nov 2002 20:12:39 -0500
>
>
>I read an e-mail about somebody looking for permutations.. Sorry, I'm a
>bit short on time so I won't have a chance to look for that e-mail or
>test out the code thoroughly (though my quick test shows that it works).
>Here is a little function that I have been using to find permutations.
>You call it with the set of characters you want to be used (ex: {'A',
>'B', 'C'} or {'1', '2', '3'}) and the length of each permutation (ex: 3,
>6, 9).
>
>It's not the most optimized function in the world, but so far I haven't
>had any problems. I was recently working with the code, so it may not
>work exactly right (sorry!). I thought if I sent it to the list I could
>get some c&c on it. Tell me what you think!
>
>~Tom
>
>-- code --
>function GetPermutations( sequence characters, atom len )
>  sequence final, combo
>  integer chars
>  atom doit doit = 1
>  final = {}
>  combo = repeat(1, len)
>  chars = length(characters)
>  while doit do
>   final = append(final, combo)
>   combo[1] += 1
>   for i = 1 to len do
>    if combo[i] > chars then
>     if i = len then
>      combo[i] = chars
>      final = append(final, combo)
>      doit = 0
>      exit
>     else
>      combo[i..i+1] = {1, combo[i+1]+1}
>     end if
>    end if
>   end for
>  end while
>  for i = 1 to length(final) do
>   for p = 1 to length(final[i]) do
>    final[i][p] = characters[final[i][p]]
>    end for
>   end for
>  return final
>end function
>-- code --
>
>---
>
>
>
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu