aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-10-07 21:55:26 +0100
committerGitHub <noreply@github.com>2020-10-07 21:55:26 +0100
commitf02433ffa321383734bfe15d53eecd8883a02552 (patch)
tree542de6f72709ff9685845b4d3c49a5af8d561176
parent7f85c2620938dbf5e8201885ffbdaba3018ce40b (diff)
parent1bf08a8547aab0cc7f60923ad26f516afcc6e5ff (diff)
downloadperlweeklychallenge-club-f02433ffa321383734bfe15d53eecd8883a02552.tar.gz
perlweeklychallenge-club-f02433ffa321383734bfe15d53eecd8883a02552.tar.bz2
perlweeklychallenge-club-f02433ffa321383734bfe15d53eecd8883a02552.zip
Merge pull request #2472 from gugod/master
gugod's Raku solutions for PWC 081
-rw-r--r--challenge-081/gugod/raku/ch-1.raku20
-rw-r--r--challenge-081/gugod/raku/ch-2.raku28
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-081/gugod/raku/ch-1.raku b/challenge-081/gugod/raku/ch-1.raku
new file mode 100644
index 0000000000..b84d053ef5
--- /dev/null
+++ b/challenge-081/gugod/raku/ch-1.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+# raku challenge-081/gugod/raku/ch-1.raku abcdabcd abcdabcdabcdabcd
+# (abcd abcdabcd)
+
+sub MAIN (Str $A, Str $B) {
+ say common-base-string($A, $B);
+}
+
+sub common-base-string (Str $A, Str $B) {
+ return ( base-string($A) ∩ base-string($B) ).keys;
+}
+
+sub base-string (Str $s) {
+ return (1..$s.chars).grep(
+ -> $n {
+ ($s.chars mod $n == 0)
+ && ($s.substr(0,$n) x ($s.chars div $n)) eq $s
+ }).map(-> $n { $s.substr(0,$n) });
+}
diff --git a/challenge-081/gugod/raku/ch-2.raku b/challenge-081/gugod/raku/ch-2.raku
new file mode 100644
index 0000000000..62a014f118
--- /dev/null
+++ b/challenge-081/gugod/raku/ch-2.raku
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+
+sub MAIN (Str $input = 'input') {
+ print-frequency-table( word-frequency( IO::Path.new($input) ) );
+}
+
+sub word-frequency ( $fh ) {
+ my %freq;
+ my $prev = '';
+ for $fh.split(/<?wb>/) -> $token {
+ if $token.match(/<:Letter>/) && !($token eq "s" && $prev eq "'") {
+ %freq{$token} += 1;
+ }
+ $prev = $token;
+ }
+
+ return %freq;
+}
+
+sub print-frequency-table ( %freq ) {
+ my %rfreq;
+ for %freq.pairs -> $it {
+ %rfreq{ $it.value }.append( $it.key );
+ }
+ for %rfreq.keys.sort -> $n {
+ say $n ~ ' ' ~ %rfreq{$n}.sort.join(' ');
+ }
+}