diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-10-30 14:50:45 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-30 14:50:45 +0000 |
| commit | 4fba3b97debc7064be367933f84524a251e75ff3 (patch) | |
| tree | f92517f79e7a458a2968d16422a46e31b7d80ddb /challenge-032 | |
| parent | 1fbbcb6abfedd10fafb87cb2d064608222836a91 (diff) | |
| parent | 0649b7cf88bc5ee2dca687ad984cdb5dd59528ae (diff) | |
| download | perlweeklychallenge-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-x | challenge-032/roger-bell-west/perl5/ch-1.pl | 27 | ||||
| -rwxr-xr-x | challenge-032/roger-bell-west/perl5/ch-2.pl | 28 |
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})); + } +} |
