From 7f57699a91617338e14a979c3bba80688682ee8e Mon Sep 17 00:00:00 2001 From: holli-holzer Date: Mon, 28 Oct 2019 19:24:45 +0100 Subject: 2 in 1 Solution Markus Holzer --- challenge-032/markus-holzer/perl6/ch-1-and-2.pl6 | 26 ++++++++++++++++++++++++ challenge-032/markus-holzer/perl6/simpsons.txt | 10 +++++++++ 2 files changed, 36 insertions(+) create mode 100644 challenge-032/markus-holzer/perl6/ch-1-and-2.pl6 create mode 100644 challenge-032/markus-holzer/perl6/simpsons.txt diff --git a/challenge-032/markus-holzer/perl6/ch-1-and-2.pl6 b/challenge-032/markus-holzer/perl6/ch-1-and-2.pl6 new file mode 100644 index 0000000000..0941012c55 --- /dev/null +++ b/challenge-032/markus-holzer/perl6/ch-1-and-2.pl6 @@ -0,0 +1,26 @@ +my %*SUB-MAIN-OPTS = :named-anywhere; + +multi sub MAIN( *@files, Bool :$csv, Bool :$graph, Bool :$sort-by-label ) +{ + CATCH { return .message.say } + + my @words = @files + ?? @files.map( |*.IO.lines ) + !! |$*ARGFILES.lines; + + my $weights = Bag.new( @words ); + my $lngst = max $weights.keys.map( *.chars ); + + my $format = $csv ?? "%s, %s" !! + $graph ?? "%{$lngst}s | %s " !! + "%-{$lngst}s %s " ; + + my &sorter = $sort-by-label + ?? { $^a.key cmp $^b.key } + !! { $^b.value <=> $^a.value }; + + .say for $weights + .sort( &sorter ) + .map({ .key => $graph ?? "#" x .value !! .value }) + .map({ sprintf $format, .key, .value }); +} \ No newline at end of file diff --git a/challenge-032/markus-holzer/perl6/simpsons.txt b/challenge-032/markus-holzer/perl6/simpsons.txt new file mode 100644 index 0000000000..bb3179d47e --- /dev/null +++ b/challenge-032/markus-holzer/perl6/simpsons.txt @@ -0,0 +1,10 @@ +Marge +Homer +Bart +Maggie +Homer +Bart +Homer +Marge +Homer +Bart \ No newline at end of file -- cgit