use Modern::Perl;
use Algorithm::Permute;
use List::AllUtils qw/uniq/;
find_perms(1151);
sub find_perms {
my ($value) = @_;
my @others;
my @digits = split(//, $value);
my $perm = Algorithm::Permute->new(\@digits);
while (my @next = $perm->next()) {
my $number = join('', @next);
push @others, $number;
}
@others = sort uniq @others;
# this one works correctly
# @others = sort (uniq(@others));
say "FOUND @others";
}
Output:
FOUND 1115 1115 1115 1115 1115 1115 1151 1151 1151 1151 1151 1151 1511 1511 1511 1511 1511 1511 5111 5111 5111 5111 5111 5111
嗨,Perl的算法:置換和列表:: AllUtils(uniq的)
發現指出,Algorithm::Permute是生產重複,很可能是由於「1在‘1151’的金額後,我決定使用uniq
。但是,如果沒有括號使用sort uniq
不會產生預期的結果。但sort(uniq(@x))
呢。是什麼賦予了?
如果我能接受兩個答案我會的!我可能會這樣。謝謝。 – Richard