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
やあ、
Algorithm :: Permuteが重複を生成していることを発見した後、おそらく「1151」の「1」の量が原因で、を使用することにしましuniq
た。ただしsort uniq
、括弧なしで使用しても、期待した結果は得られません。しかし、sort(uniq(@x))
そうです。何が得られますか?