#!/usr/local/bin/perl -w use Algorithm::Combinatorics qw(permutations circular_permutations); use Time::HiRes qw(gettimeofday tv_interval); use strict; my @data = 0..9; my $c=0; # scalar context gives an iterator my $t0 = [gettimeofday]; my $iter = circular_permutations(\@data); while (my $p = $iter->next) { # ... print "@$p\n"; $c++; # last if ++$c > 1000 } my $elapsed1 = tv_interval ( $t0 ); my $cc=0; my $t2 = [gettimeofday]; my $iter = permutations(\@data); while (my $p = $iter->next) { # ... print "@$p\n"; $cc++; # last if ++$cc > 1000 } my $elapsed2 = tv_interval ( $t2 ); print "TOTAL $c circular permutations, elapsed time $elapsed1\n"; print "TOTAL $cc permutations, elapsed time $elapsed2\n"; # list context slurps # my @all_permutations = permutations(\@data); __END__ Un algoritmo muy eficiente