aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2020-10-11 12:34:38 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2020-10-11 12:34:38 +0200
commitc2a0c63e1d2be5a0df9f68fd5820dbb620f09510 (patch)
tree9464d6d02707f0f48420390e514ec4e32ab2234a
parent1bd52670a0516f8510e4ea7daf45bec0e3655db4 (diff)
downloadperlweeklychallenge-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.raku26
-rw-r--r--challenge-081/wambash/raku/ch-2.raku40
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;
+}