diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2020-10-11 12:34:38 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2020-10-11 12:34:38 +0200 |
| commit | c2a0c63e1d2be5a0df9f68fd5820dbb620f09510 (patch) | |
| tree | 9464d6d02707f0f48420390e514ec4e32ab2234a | |
| parent | 1bd52670a0516f8510e4ea7daf45bec0e3655db4 (diff) | |
| download | perlweeklychallenge-club-c2a0c63e1d2be5a0df9f68fd5820dbb620f09510.tar.gz perlweeklychallenge-club-c2a0c63e1d2be5a0df9f68fd5820dbb620f09510.tar.bz2 perlweeklychallenge-club-c2a0c63e1d2be5a0df9f68fd5820dbb620f09510.zip | |
solutions week 081
| -rw-r--r-- | challenge-081/wambash/raku/ch-1.raku | 26 | ||||
| -rw-r--r-- | challenge-081/wambash/raku/ch-2.raku | 40 |
2 files changed, 66 insertions, 0 deletions
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* $ + <?{ + with $0 { + $b.match: / ^ "$_"+ $ / + } + }> + /, + :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' ), <abcdabcd abcd>; + 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<input.txt> ; + is $fs.{9}, <and the>; + is $fs.{3}, <Maria Tony a can of stop>; + is $fs.{1}.elems, 84; + done-testing; +} |
