aboutsummaryrefslogtreecommitdiff
path: root/challenge-032
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-11-03 22:43:36 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-11-03 22:43:36 +0000
commit49bf6e735f5b79e2ba99f38d8a76ee718de05833 (patch)
tree75b9baee62b0fcca1616ee0c79a0b75d95548ef7 /challenge-032
parent2a5fda623e02bf768bcda74478afeb0dc6d86829 (diff)
downloadperlweeklychallenge-club-49bf6e735f5b79e2ba99f38d8a76ee718de05833.tar.gz
perlweeklychallenge-club-49bf6e735f5b79e2ba99f38d8a76ee718de05833.tar.bz2
perlweeklychallenge-club-49bf6e735f5b79e2ba99f38d8a76ee718de05833.zip
- Added solutions by Ruben Westerberg.
Diffstat (limited to 'challenge-032')
-rwxr-xr-xchallenge-032/ruben-westerberg/perl5/ch-1.pl34
-rwxr-xr-xchallenge-032/ruben-westerberg/perl5/ch-2.pl34
-rwxr-xr-xchallenge-032/ruben-westerberg/perl6/ch-1.p627
-rwxr-xr-xchallenge-032/ruben-westerberg/perl6/ch-2.p627
4 files changed, 122 insertions, 0 deletions
diff --git a/challenge-032/ruben-westerberg/perl5/ch-1.pl b/challenge-032/ruben-westerberg/perl5/ch-1.pl
new file mode 100755
index 0000000000..23c05b0ef9
--- /dev/null
+++ b/challenge-032/ruben-westerberg/perl5/ch-1.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Getopt::Std;
+use List::Util;
+my %options=();
+getopts("v", \%options);
+
+my %data;
+
+while (<>) {
+ chomp;
+ $data{$_}++;
+}
+
+histogram(\%data,$options{v},0);
+histogram(\%data,$options{v},1);
+
+sub histogram {
+ my $h=shift;
+ my $valueSort=shift;
+ my $chart=shift;
+ my @keys= sort keys %$h;# { length $b > length $a} keys %$h;
+ my $maxKeyLength=List::Util::max map { length $_} keys %$h;
+ print "\n";
+ if ($valueSort) {
+ @keys=sort { $$h{$b} > $$h{$a} } keys %$h;
+ }
+ for (@keys) {
+ my $v=$$h{$_};
+ $v= "#" x $$h{$_} if $chart;
+ printf("%".$maxKeyLength."s| %s\n", $_, $v);
+ }
+}
diff --git a/challenge-032/ruben-westerberg/perl5/ch-2.pl b/challenge-032/ruben-westerberg/perl5/ch-2.pl
new file mode 100755
index 0000000000..23c05b0ef9
--- /dev/null
+++ b/challenge-032/ruben-westerberg/perl5/ch-2.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Getopt::Std;
+use List::Util;
+my %options=();
+getopts("v", \%options);
+
+my %data;
+
+while (<>) {
+ chomp;
+ $data{$_}++;
+}
+
+histogram(\%data,$options{v},0);
+histogram(\%data,$options{v},1);
+
+sub histogram {
+ my $h=shift;
+ my $valueSort=shift;
+ my $chart=shift;
+ my @keys= sort keys %$h;# { length $b > length $a} keys %$h;
+ my $maxKeyLength=List::Util::max map { length $_} keys %$h;
+ print "\n";
+ if ($valueSort) {
+ @keys=sort { $$h{$b} > $$h{$a} } keys %$h;
+ }
+ for (@keys) {
+ my $v=$$h{$_};
+ $v= "#" x $$h{$_} if $chart;
+ printf("%".$maxKeyLength."s| %s\n", $_, $v);
+ }
+}
diff --git a/challenge-032/ruben-westerberg/perl6/ch-1.p6 b/challenge-032/ruben-westerberg/perl6/ch-1.p6
new file mode 100755
index 0000000000..368563c978
--- /dev/null
+++ b/challenge-032/ruben-westerberg/perl6/ch-1.p6
@@ -0,0 +1,27 @@
+#!/usr/bin/env perl6
+
+sub MAIN(*@files,:$vsort=False) {
+ my %data;
+
+ for @files {
+ for .IO.lines() {
+ %data{$_}++;
+ }
+ }
+ histogram(%data,$vsort,False);
+ histogram(%data,$vsort,True);
+}
+
+sub histogram(%h,$valueSort,$chart) {
+ my @keys=%h.keys.sort;#(*.chars < *.chars);
+ my $maxKeyLength=@keys>>.chars.max;
+ put "";
+ if ($valueSort) {
+ @keys=%h.keys.sort(-> $a,$b {%h{$a} < %h{$b}});
+ }
+ for @keys {
+ my $v=%h{$_}.Str;
+ $v="#" x %h{$_} if $chart;
+ printf("%"~$maxKeyLength~"s| %s\n",$_,$v);
+ }
+}
diff --git a/challenge-032/ruben-westerberg/perl6/ch-2.p6 b/challenge-032/ruben-westerberg/perl6/ch-2.p6
new file mode 100755
index 0000000000..368563c978
--- /dev/null
+++ b/challenge-032/ruben-westerberg/perl6/ch-2.p6
@@ -0,0 +1,27 @@
+#!/usr/bin/env perl6
+
+sub MAIN(*@files,:$vsort=False) {
+ my %data;
+
+ for @files {
+ for .IO.lines() {
+ %data{$_}++;
+ }
+ }
+ histogram(%data,$vsort,False);
+ histogram(%data,$vsort,True);
+}
+
+sub histogram(%h,$valueSort,$chart) {
+ my @keys=%h.keys.sort;#(*.chars < *.chars);
+ my $maxKeyLength=@keys>>.chars.max;
+ put "";
+ if ($valueSort) {
+ @keys=%h.keys.sort(-> $a,$b {%h{$a} < %h{$b}});
+ }
+ for @keys {
+ my $v=%h{$_}.Str;
+ $v="#" x %h{$_} if $chart;
+ printf("%"~$maxKeyLength~"s| %s\n",$_,$v);
+ }
+}