diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-11-03 01:58:59 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-11-03 01:58:59 +0000 |
| commit | da324385544c1300bd8ff11c188f95507d1e0004 (patch) | |
| tree | dd257fb3953c8164a99faf4f6c0df8e9142e7400 | |
| parent | 275f2200cbca9fe87e2b5b795a59ac5e7746208b (diff) | |
| download | perlweeklychallenge-club-da324385544c1300bd8ff11c188f95507d1e0004.tar.gz perlweeklychallenge-club-da324385544c1300bd8ff11c188f95507d1e0004.tar.bz2 perlweeklychallenge-club-da324385544c1300bd8ff11c188f95507d1e0004.zip | |
- Added solutions by Arne Sommer.
24 files changed, 1259 insertions, 1030 deletions
diff --git a/challenge-032/arne-sommer/blog.txt b/challenge-032/arne-sommer/blog.txt new file mode 100644 index 0000000000..21fca9912b --- /dev/null +++ b/challenge-032/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/instance-bar.html diff --git a/challenge-032/arne-sommer/perl6/abc b/challenge-032/arne-sommer/perl6/abc new file mode 100755 index 0000000000..65c5158517 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/abc @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (Str :$sort where $sort eq any("", "values", "labels") = ""); + +my $data = { apple => 3, cherry => 2, banana => 1 }; + +generate_bar_graph($data, $sort); + +sub generate_bar_graph ($data, $sort) +{ + my $max = %($data).keys>>.chars.max; + + my @keys = %($data).keys; + + if $sort eq "values" + { + @keys = @keys.sort({ %($data){$^b} cmp %($data){$^a} }); + } + elsif $sort eq "labels" + { + @keys = @keys.sort; + } + + for @keys -> $label + { + say "{ " " x ($max - $label.chars) }$label | { "#" x 4 * %($data){$label} }"; + } +}
\ No newline at end of file diff --git a/challenge-032/arne-sommer/perl6/abc-float b/challenge-032/arne-sommer/perl6/abc-float new file mode 100755 index 0000000000..a444a9e9c6 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/abc-float @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (Str :$sort where $sort eq any("", "values", "labels") = ""); + +my $data = { apple => pi, cherry => e, banana => 0.3, junkfood => 0.6 }; + +generate_bar_graph($data, $sort); + +sub generate_bar_graph ($data, $sort) +{ + my $max = %($data).keys>>.chars.max; + + my @keys = %($data).keys; + + if $sort eq "values" + { + @keys = @keys.sort({ %($data){$^b} cmp %($data){$^a} }); + } + elsif $sort eq "labels" + { + @keys = @keys.sort; + } + + for @keys -> $label + { + say "{ " " x ($max - $label.chars) }$label | { "#" x 4 * %($data){$label} }"; + } +}
\ No newline at end of file diff --git a/challenge-032/arne-sommer/perl6/abc-unsorted b/challenge-032/arne-sommer/perl6/abc-unsorted new file mode 100755 index 0000000000..e8c73e1f6d --- /dev/null +++ b/challenge-032/arne-sommer/perl6/abc-unsorted @@ -0,0 +1,15 @@ +#! /usr/bin/env raku + +my $data = { apple => 3, cherry => 2, banana => 1 }; + +generate_bar_graph($data); + +sub generate_bar_graph ($data) +{ + my $max = %($data).keys>>.chars.max; + + for %($data).kv -> $label, $count + { + say "{ " " x ($max - $label.chars) }$label | { "#" x 4 * $count }"; + } +}
\ No newline at end of file diff --git a/challenge-032/arne-sommer/perl6/ch-1.p6 b/challenge-032/arne-sommer/perl6/ch-1.p6 new file mode 100755 index 0000000000..983c4dd186 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/ch-1.p6 @@ -0,0 +1,23 @@ +#! /usr/bin/env raku + +multi sub MAIN ($file where $file.IO.f && $file.IO.r, :$csv = False) +{ + line-counter($file.IO.lines.Bag, $csv); +} + +multi sub MAIN (:$csv = False) +{ + line-counter($*ARGFILES.lines.Bag, $csv); +} + +sub line-counter (%input, $csv) +{ + my $max = %input.keys>>.chars.max; + + for %input.keys.sort({ %input{$^b} <=> %input{$^a} || $^a cmp $^b }) + { + say $csv + ?? "$_,%input{$_}" + !! "{ $_ }{ " " x ($max - .chars) } { %input{$_} }"; + } +} diff --git a/challenge-032/arne-sommer/perl6/ch-2.p6 b/challenge-032/arne-sommer/perl6/ch-2.p6 new file mode 100755 index 0000000000..65c5158517 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/ch-2.p6 @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (Str :$sort where $sort eq any("", "values", "labels") = ""); + +my $data = { apple => 3, cherry => 2, banana => 1 }; + +generate_bar_graph($data, $sort); + +sub generate_bar_graph ($data, $sort) +{ + my $max = %($data).keys>>.chars.max; + + my @keys = %($data).keys; + + if $sort eq "values" + { + @keys = @keys.sort({ %($data){$^b} cmp %($data){$^a} }); + } + elsif $sort eq "labels" + { + @keys = @keys.sort; + } + + for @keys -> $label + { + say "{ " " x ($max - $label.chars) }$label | { "#" x 4 * %($data){$label} }"; + } +}
\ No newline at end of file diff --git a/challenge-032/arne-sommer/perl6/example.txt b/challenge-032/arne-sommer/perl6/example.txt new file mode 100644 index 0000000000..00fe021a08 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/example.txt @@ -0,0 +1,6 @@ +apple +banana +apple +cherry +cherry +apple diff --git a/challenge-032/arne-sommer/perl6/example2.txt b/challenge-032/arne-sommer/perl6/example2.txt new file mode 100644 index 0000000000..df7719338f --- /dev/null +++ b/challenge-032/arne-sommer/perl6/example2.txt @@ -0,0 +1,8 @@ +apple +banana +apple +cherry +cherry +apple +junkfood +junkfood diff --git a/challenge-032/arne-sommer/perl6/line-counter b/challenge-032/arne-sommer/perl6/line-counter new file mode 100755 index 0000000000..0dca9544d1 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/line-counter @@ -0,0 +1,5 @@ +#! /usr/bin/env raku + +my %input = $*ARGFILES.lines.Bag; + +say "$_\t%input{$_}" for %input.keys.sort( { %input{$^b} <=> %input{$^a} }); diff --git a/challenge-032/arne-sommer/perl6/line-counter-argfiles b/challenge-032/arne-sommer/perl6/line-counter-argfiles new file mode 100755 index 0000000000..b9769a4275 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/line-counter-argfiles @@ -0,0 +1,5 @@ +#! /usr/bin/env raku + +my %input = $*ARGFILES.lines.Bag; + +say "$_:\t%input{$_}" for %input.keys.sort( { %input{$^b} <=> %input{$^a} }); diff --git a/challenge-032/arne-sommer/perl6/line-counter-csv b/challenge-032/arne-sommer/perl6/line-counter-csv new file mode 100755 index 0000000000..3570888c8f --- /dev/null +++ b/challenge-032/arne-sommer/perl6/line-counter-csv @@ -0,0 +1,17 @@ +#! /usr/bin/env raku + +multi sub MAIN ($file where $file.IO.f && $file.IO.r, :$csv = False) +{ + line-counter($file.IO.lines.Bag, $csv); +} + +multi sub MAIN (:$csv = False) +{ + line-counter($*ARGFILES.lines.Bag, $csv); +} + +sub line-counter (%input, $csv) +{ + my $separator = $csv ?? "," !! "\t"; + say "$_$separator%input{$_}" for %input.keys.sort( { %input{$^b} <=> %input{$^a} }); +} diff --git a/challenge-032/arne-sommer/perl6/line-counter-csv-fixed b/challenge-032/arne-sommer/perl6/line-counter-csv-fixed new file mode 100755 index 0000000000..983c4dd186 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/line-counter-csv-fixed @@ -0,0 +1,23 @@ +#! /usr/bin/env raku + +multi sub MAIN ($file where $file.IO.f && $file.IO.r, :$csv = False) +{ + line-counter($file.IO.lines.Bag, $csv); +} + +multi sub MAIN (:$csv = False) +{ + line-counter($*ARGFILES.lines.Bag, $csv); +} + +sub line-counter (%input, $csv) +{ + my $max = %input.keys>>.chars.max; + + for %input.keys.sort({ %input{$^b} <=> %input{$^a} || $^a cmp $^b }) + { + say $csv + ?? "$_,%input{$_}" + !! "{ $_ }{ " " x ($max - .chars) } { %input{$_} }"; + } +} diff --git a/challenge-032/arne-sommer/perl6/line-counter-file b/challenge-032/arne-sommer/perl6/line-counter-file new file mode 100755 index 0000000000..06c766d0e7 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/line-counter-file @@ -0,0 +1,8 @@ +#! /usr/bin/env raku + +unit sub MAIN ($file where $file.IO.f && $file.IO.r = "example.txt"); + +my %input = $file.IO.lines.Bag; + +say "$_\t%input{$_}" for %input.keys.sort( { %input{$^b} <=> %input{$^a} }); + diff --git a/challenge-032/arne-sommer/perl6/line-counter-multi b/challenge-032/arne-sommer/perl6/line-counter-multi new file mode 100755 index 0000000000..8860053115 --- /dev/null +++ b/challenge-032/arne-sommer/perl6/line-counter-multi @@ -0,0 +1,15 @@ +#! /usr/bin/env raku + +multi sub MAIN ($file where $file.IO.f && $file.IO.r = "example.txt") +{ + say "[file]"; + my %input = $file.IO.lines.Bag; + say "$_:\t%input{$_}" for %input.keys.sort( { %input{$^b} <=> %input{$^a} }); +} + +multi sub MAIN () +{ + say "[argfiles]"; + my %input = $*ARGFILES.lines.Bag; + say "$_:\t%input{$_}" for %input.keys.sort( { %input{$^b} <=> %input{$^a} }); +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 45827332b6..e492aa7f0f 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,21 +1,9 @@ { - "legend" : { - "enabled" : 0 - }, - "xAxis" : { - "type" : "category" - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "title" : { - "text" : "Perl Weekly Challenge - 032" - }, - "chart" : { - "type" : "column" - }, "drilldown" : { "series" : [ { @@ -25,8 +13,22 @@ 2 ] ], - "id" : "Andrezgz", - "name" : "Andrezgz" + "name" : "Andrezgz", + "id" : "Andrezgz" + }, + { + "data" : [ + [ + "Perl 6", + 2 + ], + [ + "Blog", + 1 + ] + ], + "name" : "Arne Sommer", + "id" : "Arne Sommer" }, { "data" : [ @@ -39,18 +41,18 @@ "id" : "Dave Cross" }, { + "name" : "Dave Jacoby", "data" : [ [ "Perl 5", 2 ] ], - "id" : "Dave Jacoby", - "name" : "Dave Jacoby" + "id" : "Dave Jacoby" }, { - "name" : "Duane Powell", "id" : "Duane Powell", + "name" : "Duane Powell", "data" : [ [ "Perl 5", @@ -59,28 +61,26 @@ ] }, { + "id" : "E. Choroba", + "name" : "E. Choroba", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "E. Choroba", - "name" : "E. Choroba" + ] }, { + "id" : "Fabrizio Poggi", + "name" : "Fabrizio Poggi", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Fabrizio Poggi", - "name" : "Fabrizio Poggi" + ] }, { - "name" : "Javier Luque", - "id" : "Javier Luque", "data" : [ [ "Perl 5", @@ -94,9 +94,13 @@ "Blog", 1 ] - ] + ], + "name" : "Javier Luque", + "id" : "Javier Luque" }, { + "id" : "Joelle Maslak", + "name" : "Joelle Maslak", "data" : [ [ "Perl 5", @@ -106,19 +110,17 @@ "Perl 6", 2 ] - ], - "name" : "Joelle Maslak", - "id" : "Joelle Maslak" + ] }, { "id" : "Kevin Colyer", - "name" : "Kevin Colyer", "data" : [ [ "Perl 6", 2 ] - ] + ], + "name" : "Kevin Colyer" }, { "data" : [ @@ -159,34 +161,34 @@ "id" : "Laurent Rosenfeld" }, { - "id" : "Markus Holzer", "name" : "Markus Holzer", "data" : [ [ "Perl 6", 2 ] - ] + ], + "id" : "Markus Holzer" }, { - "name" : "Nazareno Delucca", "id" : "Nazareno Delucca", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Nazareno Delucca" }, { - "id" : "Prajith P", "name" : "Prajith P", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Prajith P" }, { "data" : [ @@ -199,8 +201,8 @@ "id" : "Rage311" }, { - "name" : "Roger Bell West", "id" : "Roger Bell West", + "name" : "Roger Bell West", "data" : [ [ "Perl 5", @@ -209,8 +211,8 @@ ] }, { - "name" : "Ryan Thompson", "id" : "Ryan Thompson", + "name" : "Ryan Thompson", "data" : [ [ "Perl 5", @@ -223,18 +225,18 @@ ] }, { + "name" : "Simon Proctor", "data" : [ [ "Perl 6", 2 ] ], - "id" : "Simon Proctor", - "name" : "Simon Proctor" + "id" : "Simon Proctor" }, { - "name" : "Steven Wilson", "id" : "Steven Wilson", + "name" : "Steven Wilson", "data" : [ [ "Perl 5", @@ -243,39 +245,39 @@ ] }, { + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke", "data" : [ [ "Perl 5", 2 ] - ], - "name" : "Ulrich Rieke", - "id" : "Ulrich Rieke" + ] }, { - "id" : "Yet Ebreo", "name" : "Yet Ebreo", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Yet Ebreo" } ] }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } + "xAxis" : { + "type" : "category" + }, + "tooltip" : { + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : 1 }, "series" : [ { "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 032", "data" : [ { "name" : "Andrezgz", @@ -283,6 +285,11 @@ "drilldown" : "Andrezgz" }, { + "drilldown" : "Arne Sommer", + "y" : 3, + "name" : "Arne Sommer" + }, + { "drilldown" : "Dave Cross", "y" : 2, "name" : "Dave Cross" @@ -299,22 +306,22 @@ }, { "name" : "E. Choroba", - "drilldown" : "E. Choroba", - "y" : 2 + "y" : 2, + "drilldown" : "E. Choroba" }, { - "drilldown" : "Fabrizio Poggi", + "name" : "Fabrizio Poggi", "y" : 2, - "name" : "Fabrizio Poggi" + "drilldown" : "Fabrizio Poggi" }, { - "name" : "Javier Luque", "drilldown" : "Javier Luque", - "y" : 5 + "y" : 5, + "name" : "Javier Luque" }, { - "y" : 4, "drilldown" : "Joelle Maslak", + "y" : 4, "name" : "Joelle Maslak" }, { @@ -328,8 +335,8 @@ "drilldown" : "Lars Balker" }, { - "name" : "Lars Thegler", "y" : 2, + "name" : "Lars Thegler", "drilldown" : "Lars Thegler" }, { @@ -338,39 +345,39 @@ "name" : "Laurent Rosenfeld" }, { - "drilldown" : "Markus Holzer", "y" : 2, - "name" : "Markus Holzer" + "name" : "Markus Holzer", + "drilldown" : "Markus Holzer" }, { - "name" : "Nazareno Delucca", "drilldown" : "Nazareno Delucca", - "y" : 2 + "y" : 2, + "name" : "Nazareno Delucca" }, { + "drilldown" : "Prajith P", "name" : "Prajith P", - "y" : 2, - "drilldown" : "Prajith P" + "y" : 2 }, { + "drilldown" : "Rage311", "name" : "Rage311", - "y" : 2, - "drilldown" : "Rage311" + "y" : 2 }, { - "name" : "Roger Bell West", "y" : 2, + "name" : "Roger Bell West", "drilldown" : "Roger Bell West" }, { + "name" : "Ryan Thompson", "y" : 3, - "drilldown" : "Ryan Thompson", - "name" : "Ryan Thompson" + "drilldown" : "Ryan Thompson" }, { + "name" : "Simon Proctor", "y" : 2, - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" + "drilldown" : "Simon Proctor" }, { "name" : "Steven Wilson", @@ -378,25 +385,37 @@ "drilldown" : "Steven Wilson" }, { + "drilldown" : "Ulrich Rieke", "name" : "Ulrich Rieke", - "y" : 2, - "drilldown" : "Ulrich Rieke" + "y" : 2 }, { "drilldown" : "Yet Ebreo", "y" : 2, "name" : "Yet Ebreo" } - ], - "name" : "Perl Weekly Challenge - 032" + ] } ], - "tooltip" : { - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", - "followPointer" : 1, - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "chart" : { + "type" : "column" }, "subtitle" : { - "text" : "[Champions: 22] Last updated at 2019-11-03 01:49:55 GMT" + "text" : "[Champions: 23] Last updated at 2019-11-03 01:58:06 GMT" + }, + "legend" : { + "enabled" : 0 + }, + "title" : { + "text" : "Perl Weekly Challenge - 032" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 68750fd80c..f8e0bbbc04 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,31 +1,13 @@ { - "xAxis" : { - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - }, - "type" : "category" - }, - "chart" : { - "type" : "column" - }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, "series" : [ { "data" : [ [ "Blog", - 340 + 341 ], [ "Perl 5", @@ -33,31 +15,49 @@ ], [ "Perl 6", - 791 + 793 ] ], "name" : "Contributions", "dataLabels" : { + "enabled" : "true", "align" : "right", + "rotation" : -90, "format" : "{point.y:.0f}", - "color" : "#FFFFFF", - "y" : 10, - "enabled" : "true", "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" }, - "rotation" : -90 + "color" : "#FFFFFF", + "y" : 10 } } ], - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, "legend" : { "enabled" : "false" }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + } + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "chart" : { + "type" : "column" + }, "subtitle" : { - "text" : "Last updated at 2019-11-03 01:50:05 GMT" + "text" : "Last updated at 2019-11-03 01:58:34 GMT" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index b9b19c8e2a..d386ce6222 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,13 +1,27 @@ { - "yAxis" : { - "title" : { - "text" : "Total Solutions" + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 } }, - "tooltip" : { - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : "true", - "headerFormat" : "<span style=\"font-size:11px\"></span>" + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-11-03 01:58:34 GMT" + }, + "title" : { + "text" : "Perl Weekly Challenge Language" + }, + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : "false" + }, + "xAxis" : { + "type" : "category" }, "series" : [ { @@ -19,8 +33,8 @@ }, { "name" : "#002", - "drilldown" : "002", - "y" : 104 + "y" : 104, + "drilldown" : "002" }, { "name" : "#003", @@ -29,27 +43,27 @@ }, { "drilldown" : "004", - "name" : "#004", - "y" : 86 + "y" : 86, + "name" : "#004" }, { - "drilldown" : "005", "name" : "#005", + "drilldown" : "005", "y" : 66 }, { - "y" : 48, "name" : "#006", + "y" : 48, "drilldown" : "006" }, { - "name" : "#007", + "y" : 56, "drilldown" : "007", - "y" : 56 + "name" : "#007" }, { - "y" : 70, "drilldown" : "008", + "y" : 70, "name" : "#008" }, { @@ -59,8 +73,8 @@ }, { "y" : 60, - "name" : "#010", - "drilldown" : "010" + "drilldown" : "010", + "name" : "#010" }, { "name" : "#011", @@ -69,38 +83,38 @@ }, { "y" : 83, - "name" : "#012", - "drilldown" : "012" + "drilldown" : "012", + "name" : "#012" }, { - "y" : 76, + "name" : "#013", "drilldown" : "013", - "name" : "#013" + "y" : 76 }, { + "name" : "#014", "y" : 96, - "drilldown" : "014", - "name" : "#014" + "drilldown" : "014" }, { + "drilldown" : "015", "y" : 93, - "name" : "#015", - "drilldown" : "015" + "name" : "#015" }, { - "name" : "#016", "drilldown" : "016", - "y" : 66 + "y" : 66, + "name" : "#016" }, { - "name" : |
