Quick actions

cmd+k|ctrl+k

Navigation

Languages

anagram

Snippet info

Language

Perl

Visibility

public

Author

kaspik99

Created

2018-11-09T20:27:57Z

Updated

2018-11-10T11:09:22Z

use v5.18;
use utf8;

sub anagram {
    my $arrayref = shift;
    my %uniq;
    my %res;
    for my $val (map { lc $_ } @$arrayref) {
        next if $uniq{$val}++;
        my $key = join '', sort split(//, $val);
        push @{ $res{$key} }, $val; 
    }

    my %res2;
    for my $key (keys %res) {
        next if scalar @{ $res{$key} } < 2;
        my $k = $res{$key}->[0];
        @{ $res2{$k} } = @{ $res{$key} };
    }

    return \%res2;
}

my @list = ('пятак', 'ЛиСток', 'пятка', 'стул', 'ПяТаК', 'слиток', 'тяпка', 'столик', 'слиток');
my $result = anagram(\@list);

say "$_: @{$result->{$_}}" for sort keys %$result;
# { 'пятак' => ['пятак', 'пятка', 'тяпка'], 'листок' => ['листок', 'слиток', 'столик'], }
INFO