I’ve been messing around with generating all possible combinations of a

set of letters, (Ala, a 6 letter set would start enumerating at “aaaaaa”

then move on to “aaaaab” so on and so forth, all the way down to

“zzzzz”) by iterating through an array using slice() , Which is a pretty

good implementation for small tasks, But suppose I wanted to generate

larger sets, Is there a more efficient implementation than say

```
a=0
b=0
c=0
d=0
e=0
f=0
z = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
```

“m”, “n”, “o”, “p”, “q”, “r”, “s”, “t”, “u”, “v”, “w”, “x”, “y”, “z”]

slice = z.slice(a) + z.slice(b) + z.slice© + z.slice(d) + z.slice(e) +

z.slice(f)

if…

else… [Incrementing]

```
puts slice
```

Thank you in advance

Zephyr P. wrote:

I’ve been messing around with generating all possible combinations of a

set of letters, (Ala, a 6 letter set would start enumerating at “aaaaaa”

then move on to “aaaaab” so on and so forth, all the way down to

“zzzzz”)

(“aaaaaa”…“zzzzzz”).each do |string|

puts string

end

This will run for a good while, but it won’t hog memory the way a

solution

populating an array would.

HTH,

Sebastian

You might also try the Permutations gem at

http://permutation.rubyforge.org/

You might also try the Permutations gem …

Or use the Combinatorial Object Server and the Hpricot gem. Pass in your

parameters for the combinatorial object and scrape your results out of

the table cells. I don’t believe there is an API for the COS but

scraping the hrml results is quite easy.

Combinatorial Object Server

http://theory.cs.uvic.ca/root.html

What about something as simple as

i = 0

“aaaaa”.upto(“zzzzz”) {|s| i += 1; puts “#{i}. #{s}”}

You could write to a file if you wish. Note that “aaaaa”.upto(“zzzzz”)

is NOT the same as “a”.upto(“zzzzz”)

Sebastian H. wrote:

This will run for a good while, but it won’t hog memory the way a solution

populating an array would.

HTH,

Sebastian

Impressive, Signifigantly less RAM usage.