Generating all tuples (Perl)
From LiteratePrograms
This is a simple example of the tuples generation algorithm, written in Perl.
see The Art of Computer Programming (TAOCP) Volume 4 Fascicle 2, Generating All Tuples and Permutations (2005), ISBN 0-201-85393-0
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.pl>>= use List::Util qw(reduce); sub genTuplesM { @{ (reduce { [map { my @xs = @$_; map [@xs, $_], 1..$b } @$a] } [[]], @_) } } print "@$_\n" foreach genTuplesM(3,5,3,2);
Test
Just load the file genTuplesM.pl in Perl, execute it and you will get the result.
Download code |