aboutsummaryrefslogtreecommitdiff
path: root/challenge-081/mohammad-anwar
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-10-11 23:26:29 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-10-11 23:26:29 +0100
commit8740dd31a9e8511d8d471dd510a9d65ef3ba4754 (patch)
treeae0c54c8ac4e3a824127ae0d9c239555a43ff1b5 /challenge-081/mohammad-anwar
parenta67327cc12c53d2bad9db9764e90437829b61ed3 (diff)
downloadperlweeklychallenge-club-8740dd31a9e8511d8d471dd510a9d65ef3ba4754.tar.gz
perlweeklychallenge-club-8740dd31a9e8511d8d471dd510a9d65ef3ba4754.tar.bz2
perlweeklychallenge-club-8740dd31a9e8511d8d471dd510a9d65ef3ba4754.zip
- Added Raku solution to "Frequency Count" task.
Diffstat (limited to 'challenge-081/mohammad-anwar')
-rw-r--r--challenge-081/mohammad-anwar/raku/ch-2.raku50
1 files changed, 50 insertions, 0 deletions
diff --git a/challenge-081/mohammad-anwar/raku/ch-2.raku b/challenge-081/mohammad-anwar/raku/ch-2.raku
new file mode 100644
index 0000000000..d60c82b191
--- /dev/null
+++ b/challenge-081/mohammad-anwar/raku/ch-2.raku
@@ -0,0 +1,50 @@
+#!/usr/bin/env raku
+
+#
+# Perl Weekly Challenge - 081
+#
+# Task #2: Frequency Count
+#
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-081
+#
+
+use v6.d;
+
+sub MAIN(Str :$file where *.IO.f) {
+ frequency-count(fetch-words($file));
+}
+
+#
+#
+# SUBROUTINES
+
+sub fetch-words(Str $file where *.IO.f) {
+
+ my $words;
+ for $file.IO.lines -> $line is copy {
+ $line ~~ s:g/\.//;
+ $line ~~ s:g/\"//;
+ $line ~~ s:g/\(//;
+ $line ~~ s:g/\)//;
+ $line ~~ s:g/\,//;
+ $line ~~ s:g/\'s//;
+ $line ~~ s:g/\-\-/ /;
+ for $line.split(" ") -> $word {
+ $words.{$word} += 1;
+ }
+ }
+
+ return $words;
+}
+
+sub frequency-count($words) {
+
+ my %frequency = ();
+ for $words.keys -> $word {
+ %frequency{$words.{$word}}.push: $word;
+ }
+
+ for %frequency.keys.sort({ $^a <=> $^b }) -> $count {
+ ($count, %frequency{$count}.sort).join(" ").say;
+ }
+}