From c2a0c63e1d2be5a0df9f68fd5820dbb620f09510 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 11 Oct 2020 12:34:38 +0200 Subject: solutions week 081 --- challenge-081/wambash/raku/ch-1.raku | 26 +++++++++++++++++++++++ challenge-081/wambash/raku/ch-2.raku | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 challenge-081/wambash/raku/ch-1.raku create mode 100644 challenge-081/wambash/raku/ch-2.raku diff --git a/challenge-081/wambash/raku/ch-1.raku b/challenge-081/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..feb3020df9 --- /dev/null +++ b/challenge-081/wambash/raku/ch-1.raku @@ -0,0 +1,26 @@ +#!/usr/bin/env raku + +sub common-base-string ( $a, $b ) { + $a.match(/ + ^ (.+) $0* $ + + /, + :ex + ); + $/.map: *.[0].Str +} + +multi MAIN ( $a, $b ) { + say common-base-string($a, $b); +} + +multi MAIN ( :$test ) { + use Test; + is common-base-string( 'abcdabcd', 'abcdabcdabcdabcd' ), ; + is common-base-string( 'aaa', 'aa' ), < a >; + done-testing; +} diff --git a/challenge-081/wambash/raku/ch-2.raku b/challenge-081/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..1a2adc15ee --- /dev/null +++ b/challenge-081/wambash/raku/ch-2.raku @@ -0,0 +1,40 @@ +#!/usr/bin/env raku + +sub detox (Str $a) { + $a + andthen .trans: '."(),' => '' + andthen .subst: / <[']> s » /, '', :g + andthen .subst: / '--' /, ' ',:g +} + +multi frequency-sort ( IO(Any) :$input-file! ) { + $input-file + andthen .slurp + andthen samewith $_ +} + +multi frequency-sort ( Str $input ) { + $input + andthen .&detox + andthen .words + andthen .Bag + andthen .sort + andthen .classify: *.value, as => *.key +} + +multi MAIN () { + put frequency-sort slurp() ; +} + +multi MAIN ( IO(Str) $file ) { + put frequency-sort :input-file( $file ); +} + +multi MAIN ( Bool :$test! ) { + use Test; + my $fs = frequency-sort :input-file ; + is $fs.{9}, ; + is $fs.{3}, ; + is $fs.{1}.elems, 84; + done-testing; +} -- cgit