aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-255/simon-proctor/raku/ch-1.raku17
-rw-r--r--challenge-255/simon-proctor/raku/ch-2.raku17
2 files changed, 34 insertions, 0 deletions
diff --git a/challenge-255/simon-proctor/raku/ch-1.raku b/challenge-255/simon-proctor/raku/ch-1.raku
new file mode 100644
index 0000000000..34febe5d43
--- /dev/null
+++ b/challenge-255/simon-proctor/raku/ch-1.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/env raku
+
+multi sub MAIN('test') {
+ use Test;
+ is odd-character('Perl','Preel'), 'e';
+ is odd-character('Weekly','Weeakly'), 'a';
+ is odd-character('Box','Boxy'), 'y';
+ done-testing;
+}
+
+multi sub MAIN($s, $t) {
+ odd-character($s, $t).say;
+}
+
+sub odd-character($s, $t) {
+ return ($s.comb.Bag (^) $t.comb.Bag).keys[0]
+}
diff --git a/challenge-255/simon-proctor/raku/ch-2.raku b/challenge-255/simon-proctor/raku/ch-2.raku
new file mode 100644
index 0000000000..8e9f9cd00a
--- /dev/null
+++ b/challenge-255/simon-proctor/raku/ch-2.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/env raku
+
+multi sub MAIN('test') {
+ use Test;
+ is next-most-frequent(phrase => 'Joe hit a ball, the hit ball flew far after it was hit.', banned => 'hit'), 'ball';
+ is next-most-frequent(phrase => 'Perl and Raku belong to the same family. Perl is the most popular language in the weekly challenge.', banned => 'the'), 'Perl';
+ done-testing;
+}
+
+multi sub MAIN($banned, *@words) {
+ next-most-frequent( phrase => @words.join(' '), :$banned ).say;
+}
+
+sub next-most-frequent(:$phrase, :$banned) {
+ $phrase.words.map( { .trans(["a".."z","A".."Z"] => "", :complement) } ).grep({ $_ ne $banned }).Bag.antipairs.sort({$_.key}).reverse.first.value;
+}
+