Generating all tuples (Perl)

From LiteratePrograms

Jump to: navigation, search
Other implementations: Haskell | Lisp | Perl | Python | Ruby

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
Views
Personal tools