perl:start

Perl

Perl-snippets

Permutation erzeugen

Programm
#!perl
 
use strict;
use warnings;
 
sub perm {
   my $erg = shift(@_);
   my $sti = shift(@_);
   my @st = @_;
 
   if ($sti > $#st) {	
      push(@{$erg}, \@st);
   } else {	
      for (my $i = $sti; $i <= $#st; $i++) {
         ($st[$sti], $st[$i]) = ($st[$i], $st[$sti]);
         perm($erg, $sti + 1, @st)
      }
   }	
   return $erg;
}
 
sub printout {
   my $erg = shift(@_);
   my $z = 0;
   foreach my $arr (@{$erg}) {
      print($z++, ": ", join(',',@{$arr}), "\n");
   }
}
 
printout(perm([], 0, 1..3));
Ausgabe
0: 1,2,3
1: 1,3,2
2: 2,1,3
3: 2,3,1
4: 3,1,2
5: 3,2,1
Alternativen
perl/start.txt · Zuletzt geändert: 2015/05/23 23:42 von michael

Seiten-Werkzeuge