- or download this
sub permute {
my @items = @_;
...
return @items;
}
}
- or download this
15 = 2*3! + 1*2! + 1*1!
- or download this
sub fb_to_perm {
my @arr = @{ shift() };
...
push @ret, @arr;
return @ret;
}
- or download this
my $n = 0;
{
...
++$n;
redo;
}
- or download this
A B C D 000_F B A C D 100_F C A B D 200_F D A B C 300_F
A B D C 001_F B A D C 101_F C A D B 201_F D A C B 301_F
...
A C D B 011_F B C D A 111_F C B D A 211_F D B C A 311_F
A D B C 020_F B D A C 120_F C D A B 220_F D C A B 320_F
A D C B 021_F B D C A 121_F C D B A 221_F D C B A 321_F
- or download this
A B C D 000_F
...
C D B A 221_F
D A B C 300_F
- or download this
A B C D 000_F
A C B D 010_F
...
D A B C 300_F
D B A C 310_F
D C A B 320_F
- or download this
sub offsets {
my $p = $_[ 0 ];
...
return ( $i, $d );
}
- or download this
sub perms {
my @arr = @_;
...
redo;
}
}
- or download this
my $j = @arr - $i;
@arr[ $j+1..$#arr ] = reverse @arr[ $j+1..$#arr ];
@arr[ $j, $j+$d ] = @arr[ $j+$d, $j ];
- or download this
@arr[ 0..$i-1 ] = reverse @arr[ 0..$i-1 ];
- or download this
if ( $i % 2 ) {
@arr[ $i-1, 0 ] = @arr[ 0, $i-1 ];
...
else {
@arr[ $i-1, $d-1 ] = @arr[ $d-1, $i-1 ];
}
- or download this
Iterator {...}
- or download this
\sum_{k=0}^{m-1}k*k! = m!-1
- or download this
(m - 1)*(m - 1)! + (m - 1)! - 1 = m! - 1
- or download this
sub n_to_fb {
my ( $n, $m ) = @_;
...
}
return $n ? undef : \@fb;
}