aboutsummaryrefslogtreecommitdiff
path: root/challenge-032
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-10-30 14:50:45 +0000
committerGitHub <noreply@github.com>2019-10-30 14:50:45 +0000
commit4fba3b97debc7064be367933f84524a251e75ff3 (patch)
treef92517f79e7a458a2968d16422a46e31b7d80ddb /challenge-032
parent1fbbcb6abfedd10fafb87cb2d064608222836a91 (diff)
parent0649b7cf88bc5ee2dca687ad984cdb5dd59528ae (diff)
downloadperlweeklychallenge-club-4fba3b97debc7064be367933f84524a251e75ff3.tar.gz
perlweeklychallenge-club-4fba3b97debc7064be367933f84524a251e75ff3.tar.bz2
perlweeklychallenge-club-4fba3b97debc7064be367933f84524a251e75ff3.zip
Merge pull request #874 from Firedrake/rogerbw-challenge-032
Solutions for challenge #32
Diffstat (limited to 'challenge-032')
-rwxr-xr-xchallenge-032/roger-bell-west/perl5/ch-1.pl27
-rwxr-xr-xchallenge-032/roger-bell-west/perl5/ch-2.pl28
2 files changed, 55 insertions, 0 deletions
diff --git a/challenge-032/roger-bell-west/perl5/ch-1.pl b/challenge-032/roger-bell-west/perl5/ch-1.pl
new file mode 100755
index 0000000000..364358e37f
--- /dev/null
+++ b/challenge-032/roger-bell-west/perl5/ch-1.pl
@@ -0,0 +1,27 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use Getopt::Std;
+use Text::CSV_XS;
+
+my %o;
+getopts('c',\%o);
+
+my %s;
+while (<>) {
+ chomp;
+ $s{$_}++;
+}
+
+my $csv = Text::CSV_XS->new;
+
+foreach my $k (sort {$s{$b} <=> $s{$a} ||
+ $a cmp $b} keys %s) {
+ if ($o{c}) {
+ $csv->say(*STDOUT,[$k,$s{$k}]);
+ } else {
+ print "$k $s{$k}\n";
+ }
+}
diff --git a/challenge-032/roger-bell-west/perl5/ch-2.pl b/challenge-032/roger-bell-west/perl5/ch-2.pl
new file mode 100755
index 0000000000..78402d2954
--- /dev/null
+++ b/challenge-032/roger-bell-west/perl5/ch-2.pl
@@ -0,0 +1,28 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use List::Util qw(max);
+
+my $data = { apple => 3, cherry => 2, banana => 1 };
+generate_bar_graph($data);
+
+sub generate_bar_graph {
+ my $data=shift;
+ my $width=shift || $ENV{COLUMNS} || 80;
+ my $labelordering=shift or 0;
+ my @k=keys %{$data};
+ if ($labelordering) {
+ @k=sort @k;
+ } else {
+ @k=sort {$data->{$b} <=> $data->{$a}} @k;
+ }
+ my $kl=max(map {length($_)} @k);
+ my $bw=$width-$kl-3;
+ my $scale=$bw/max(values %{$data});
+ my $format='%-'.$kl.'s | %-'.$bw."s\n";
+ foreach my $k (@k) {
+ printf($format,$k,'#' x ($scale*$data->{$k}));
+ }
+}