順列の取得
Math::Combinatoricsモジュールを使うと順列(nPk)を取得できます。
use strict; use warnings; use Math::Combinatorics; my @items = qw(a b c); # 3から3つを選ぶ順列 my @permute = permute(@items); foreach my $p (@permute) { print join(" ", @$p), "\n"; } print "\n"; # 3から2つを選ぶ順列 # nPkを直接取得できないのでnCkの各々に対してkPkを取得している my @permute_2 = map {permute(@$_)} combine(2, @items); foreach my $p (sort { (join "\0", @$a) cmp (join "\0", @$b) } @permute_2) { print join(" ", @$p), "\n"; }