aboutsummaryrefslogtreecommitdiff
path: root/challenge-094
diff options
context:
space:
mode:
authorKang-min Liu <gugod@gugod.org>2021-01-10 18:19:28 +0900
committerKang-min Liu <gugod@gugod.org>2021-01-10 18:19:28 +0900
commit52bd254fc3da53054d1b30f2a2dc9fe46506ddff (patch)
tree0533bb6ddd7d5e73f9e7855996164ad6f0619ee0 /challenge-094
parent6accefb80dcf91089618a5ad3cf3c7988bc70e37 (diff)
downloadperlweeklychallenge-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.raku26
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
+}