Generating all tuples (Ruby)
From LiteratePrograms
This is a simple example of the tuples generation algorithm, written in Ruby.
see The Art of Computer Programming (TAOCP) Volume 4 Fascicle 2, Generating All Tuples and Permutations (2005), ISBN 0-201-85393-0
[edit]
Algorithm M
The generation function is genTuplesM as below:
- Input parameter: we list the limits on each bit into a list as an input
- Output: generating all possible tuples
<<genTuplesM.rb>>= def genTuplesM(lst) lst.inject([[]]) { |prev, b| prev.inject([]) { |acc, xs| acc + (1..b).collect { |i| xs + [i] } } } end genTuplesM([3,5,3,2])
[edit]
Test
Just load the file genTuplesM.rb in Ruby, execute it and you will get the result.
| Download code |
