diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-10-28 15:11:26 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-28 15:11:26 +0000 |
| commit | c3b4cd164a78d6ccbce96184db373897769e9f00 (patch) | |
| tree | 86de0cbdd5ea452d447e431db09d2b47a9ab017d | |
| parent | 26576d679fe1b04d039543a2427f2cc66a045083 (diff) | |
| parent | 5a03747a853f7828a1ea451822cd74cf9985e267 (diff) | |
| download | perlweeklychallenge-club-c3b4cd164a78d6ccbce96184db373897769e9f00.tar.gz perlweeklychallenge-club-c3b4cd164a78d6ccbce96184db373897769e9f00.tar.bz2 perlweeklychallenge-club-c3b4cd164a78d6ccbce96184db373897769e9f00.zip | |
Merge pull request #859 from lbalker/master
quick'n'dirty challenge 32 perl5 solutions
| -rw-r--r-- | challenge-032/lars-balker/perl5/ch-1.pl | 22 | ||||
| -rw-r--r-- | challenge-032/lars-balker/perl5/ch-2.pl | 28 |
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-032/lars-balker/perl5/ch-1.pl b/challenge-032/lars-balker/perl5/ch-1.pl new file mode 100644 index 0000000000..32bc6524ec --- /dev/null +++ b/challenge-032/lars-balker/perl5/ch-1.pl @@ -0,0 +1,22 @@ +use warnings; +use strict; + +my $csv = @ARGV && $ARGV[0] eq '-csv'; +shift if $csv; + +my %words; +my $maxlength = 0; +while (<>) { + chomp; + ++$words{$_}; + $maxlength = length if length > $maxlength; +} + +for my $word (sort { $words{$b} <=> $words{$a} || $a cmp $b } keys %words) { + if ($csv) { + printf "%s,%d\n", $word, $words{$word}; + } + else { + printf "%-*s %4d\n", $maxlength, $word, $words{$word}; + } +} diff --git a/challenge-032/lars-balker/perl5/ch-2.pl b/challenge-032/lars-balker/perl5/ch-2.pl new file mode 100644 index 0000000000..81e9b616f3 --- /dev/null +++ b/challenge-032/lars-balker/perl5/ch-2.pl @@ -0,0 +1,28 @@ +use strict; +use warnings; +my $hashes = 24; + +my $data = { apple => 3, cherry => 2, banana => 1 }; +generate_bar_graph($data); +print "\n"; +generate_bar_graph($data,1); + +sub generate_bar_graph { + my $data = shift; + my $order_by_label = shift; + + my ($sum, $maxlength) = (0, 0); + for my $word (keys %$data) { + $maxlength = length($word) if length($word) > $maxlength; + $sum += $data->{$word}; + } + + my $sort = $order_by_label + ? sub { $a cmp $b } + : sub { $data->{$b} <=> $data->{$a} || $a cmp $b }; + for my $word (sort $sort keys %$data) { + my $pct = $data->{$word} / $sum; + printf "%*s | %s\n", $maxlength, $word, + "#" x int($hashes * $pct); + } +} |
