diff options
| author | Kang-min Liu <gugod@gugod.org> | 2021-01-10 18:19:28 +0900 |
|---|---|---|
| committer | Kang-min Liu <gugod@gugod.org> | 2021-01-10 18:19:28 +0900 |
| commit | 52bd254fc3da53054d1b30f2a2dc9fe46506ddff (patch) | |
| tree | 0533bb6ddd7d5e73f9e7855996164ad6f0619ee0 /challenge-094 | |
| parent | 6accefb80dcf91089618a5ad3cf3c7988bc70e37 (diff) | |
| download | perlweeklychallenge-club-52bd254fc3da53054d1b30f2a2dc9fe46506ddff.tar.gz perlweeklychallenge-club-52bd254fc3da53054d1b30f2a2dc9fe46506ddff.tar.bz2 perlweeklychallenge-club-52bd254fc3da53054d1b30f2a2dc9fe46506ddff.zip | |
a naive solution to pwc 094.1
Diffstat (limited to 'challenge-094')
| -rw-r--r-- | challenge-094/gugod/raku/ch-1.raku | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/challenge-094/gugod/raku/ch-1.raku b/challenge-094/gugod/raku/ch-1.raku new file mode 100644 index 0000000000..53ce4283e9 --- /dev/null +++ b/challenge-094/gugod/raku/ch-1.raku @@ -0,0 +1,26 @@ +sub MAIN { + my %g = group-anagrams( ['x'] ); + say %g.gist; + + %g = group-anagrams( ["opt", "bat", "saw", "tab", "pot", "top", "was"] ); + say %g.gist; +} + +sub group-anagrams (@S) { + my %groups; + for @S -> $s { + my $group = %groups.keys.first(-> $it { is-anagram($s, $it) }); + unless $group.defined { + $group = $s; + %groups{$group} = []; + } + %groups{$group}.push($s); + } + return %groups; +} + +sub is-anagram (Str $a, Str $b) { + return False unless $a.chars == $b.chars; + + return $a.comb.sort eq $b.comb.sort +} |
