diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-10-11 23:26:29 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-10-11 23:26:29 +0100 |
| commit | 8740dd31a9e8511d8d471dd510a9d65ef3ba4754 (patch) | |
| tree | ae0c54c8ac4e3a824127ae0d9c239555a43ff1b5 /challenge-081/mohammad-anwar | |
| parent | a67327cc12c53d2bad9db9764e90437829b61ed3 (diff) | |
| download | perlweeklychallenge-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.raku | 50 |
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; + } +} |
