diff options
| -rw-r--r-- | challenge-255/simon-proctor/raku/ch-1.raku | 17 | ||||
| -rw-r--r-- | challenge-255/simon-proctor/raku/ch-2.raku | 17 |
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; +} + |
