diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-31 16:46:55 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-31 16:46:55 +0000 |
| commit | f38f105af0c21823a84e56f7e5ffd770ab0b7514 (patch) | |
| tree | f558d565fafcb7194d6d08701b3a7af1fbab9758 | |
| parent | 712d39760bea5a3e234fc3c0749873c92354d838 (diff) | |
| download | perlweeklychallenge-club-f38f105af0c21823a84e56f7e5ffd770ab0b7514.tar.gz perlweeklychallenge-club-f38f105af0c21823a84e56f7e5ffd770ab0b7514.tar.bz2 perlweeklychallenge-club-f38f105af0c21823a84e56f7e5ffd770ab0b7514.zip | |
- Added solutions by Javier Luque.
| -rw-r--r-- | challenge-032/javier-luque/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-032/javier-luque/perl5/ch-1.pl | 28 | ||||
| -rw-r--r-- | challenge-032/javier-luque/perl5/ch-2.pl | 27 | ||||
| -rw-r--r-- | challenge-032/javier-luque/perl6/ch-1.p6 | 23 | ||||
| -rw-r--r-- | challenge-032/javier-luque/perl6/ch-2.p6 | 28 | ||||
| -rw-r--r-- | stats/pwc-current.json | 335 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 50 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 268 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 872 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 118 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 68 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 124 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 52 |
15 files changed, 1106 insertions, 968 deletions
diff --git a/challenge-032/javier-luque/blog.txt b/challenge-032/javier-luque/blog.txt new file mode 100644 index 0000000000..b600ee95cb --- /dev/null +++ b/challenge-032/javier-luque/blog.txt @@ -0,0 +1 @@ +https://perlchallenges.wordpress.com/2019/10/31/perl-weekly-challenge-032/ diff --git a/challenge-032/javier-luque/perl5/ch-1.pl b/challenge-032/javier-luque/perl5/ch-1.pl new file mode 100644 index 0000000000..ba3202b3cf --- /dev/null +++ b/challenge-032/javier-luque/perl5/ch-1.pl @@ -0,0 +1,28 @@ +#!/usr/bin/perl +# Test: cat example.txt | ./ch1.pl + +use strict; +use warnings; +use Getopt::Long; + +my $use_csv = 0; +my %counts; + +GetOptions ("csv" => \$use_csv); + +# Increment the counts hash for each line +for my $line ( <STDIN> ) { + chomp($line); + $counts{$line}++; +} + +# Print the aggregated line items +for my $item (sort keys %counts) { + if ($use_csv) { + # Normally i'd use a module like Text::CSV + print $item . ',' . $counts{$item}; + } else { + printf("%-10s %d", $item, $counts{$item}) + } + print "\n"; +} diff --git a/challenge-032/javier-luque/perl5/ch-2.pl b/challenge-032/javier-luque/perl5/ch-2.pl new file mode 100644 index 0000000000..b0e63792ff --- /dev/null +++ b/challenge-032/javier-luque/perl5/ch-2.pl @@ -0,0 +1,27 @@ +#!/usr/bin/perl + +use 5.18.4; # for fc +use strict; +use warnings; + +my $data = { apple => 3, cherry => 2, banana => 1 }; +my $params = { order_by => 'name' }; +generate_bar_graph($data, $params); + +# Generates the ASCII bar graph +sub generate_bar_graph { + my ($data, $params) = @_; + my $sort_func; + + # Sorting function - just 2 for now + $sort_func = sub { $data->{$::b} <=> $data->{$::a} } + if ($params->{order_by} eq 'size'); + $sort_func = sub { fc($::a) cmp fc($::b) } + if ($params->{order_by} eq 'name'); + + # Print the chart + for my $key (sort $sort_func keys %$data) { + printf("%10s | %s \n", + $key, '#' x int(scalar($data->{$key}) * 4)); + } +} diff --git a/challenge-032/javier-luque/perl6/ch-1.p6 b/challenge-032/javier-luque/perl6/ch-1.p6 new file mode 100644 index 0000000000..7c1d71b263 --- /dev/null +++ b/challenge-032/javier-luque/perl6/ch-1.p6 @@ -0,0 +1,23 @@ +# Test: cat example.txt | perl6 ch1.p6 +use v6.d; +use Getopt::Long; +get-options("csv" => my $use_csv); + +sub MAIN () { + my %counts; + + # Increment the counts hash for each line + for $*IN.lines() -> $line { + %counts{$line.chomp}++ + }; + + # Print the aggregated line items + for %counts.keys.sort -> $item { + if ($use_csv) { + # Normally i'd use a module like Text::CSV + say $item ~ ',' ~ %counts{$item}; + } else { + "%-10s %d\n".printf($item, %counts{$item}); + } + } +} diff --git a/challenge-032/javier-luque/perl6/ch-2.p6 b/challenge-032/javier-luque/perl6/ch-2.p6 new file mode 100644 index 0000000000..1d348e0c65 --- /dev/null +++ b/challenge-032/javier-luque/perl6/ch-2.p6 @@ -0,0 +1,28 @@ +# Test: perl6 ch2.p6 +use v6.d; + +sub MAIN () { + my %data = 'apple' => 3, 'cherry' => 2, 'banana' => 1; + my %params = 'order_by' => 'size'; + generate_bar_graph(%data, %params); +} + +sub generate_bar_graph (%data, %params) { + my $sort_func; + + # Sorting function - just 2 for now + { + when (%params.{'order_by'} eq 'size') { + $sort_func = sub { %data.{$^b} <=> %data.{$^a} }; + } + + when (%params.{'order_by'} eq 'name') { + $sort_func = sub { fc($^a) cmp fc($^b) }; + } + } + + # Print the chart + for %data.keys.sort($sort_func) -> $key { + "%10s | %s \n".printf($key, '#' x (4 * %data.{$key})); + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 03c4bbcdc8..69aed33d4f 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,162 +1,40 @@ { - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, "title" : { "text" : "Perl Weekly Challenge - 032" }, - "xAxis" : { - "type" : "category" - }, - "tooltip" : { - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : 1, - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" - }, - "chart" : { - "type" : "column" - }, "plotOptions" : { "series" : { - "borderWidth" : 0, "dataLabels" : { "format" : "{point.y}", "enabled" : 1 - } + }, + "borderWidth" : 0 } }, "subtitle" : { - "text" : "[Champions: 19] Last updated at 2019-10-31 15:14:55 GMT" - }, - "legend" : { - "enabled" : 0 + "text" : "[Champions: 20] Last updated at 2019-10-31 16:46:31 GMT" }, - "series" : [ - { - "colorByPoint" : 1, - "name" : "Perl Weekly Challenge - 032", - "data" : [ - { - "drilldown" : "Andrezgz", - "y" : 2, - "name" : "Andrezgz" - }, - { - "drilldown" : "Dave Cross", - "y" : 2, - "name" : "Dave Cross" - }, - { - "drilldown" : "Dave Jacoby", - "y" : 2, - "name" : "Dave Jacoby" - }, - { - "drilldown" : "Duane Powell", - "name" : "Duane Powell", - "y" : 2 - }, - { - "drilldown" : "E. Choroba", - "y" : 2, - "name" : "E. Choroba" - }, - { - "drilldown" : "Fabrizio Poggi", - "y" : 2, - "name" : "Fabrizio Poggi" - }, - { - "drilldown" : "Joelle Maslak", - "y" : 4, - "name" : "Joelle Maslak" - }, - { - "drilldown" : "Lars Balker", - "y" : 2, - "name" : "Lars Balker" - }, - { - "drilldown" : "Lars Thegler", - "y" : 2, - "name" : "Lars Thegler" - }, - { - "drilldown" : "Laurent Rosenfeld", - "y" : 5, - "name" : "Laurent Rosenfeld" - }, - { - "name" : "Markus Holzer", - "y" : 2, - "drilldown" : "Markus Holzer" - }, - { - "drilldown" : "Nazareno Delucca", - "y" : 2, - "name" : "Nazareno Delucca" - }, - { - "y" : 2, - "name" : "Prajith P", - "drilldown" : "Prajith P" - }, - { - "drilldown" : "Rage311", - "name" : "Rage311", - "y" : 2 - }, - { - "drilldown" : "Roger Bell West", - "y" : 2, - "name" : "Roger Bell West" - }, - { - "y" : 2, - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor" - }, - { - "name" : "Steven Wilson", - "y" : 2, - "drilldown" : "Steven Wilson" - }, - { - "y" : 2, - "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke" - }, - { - "name" : "Yet Ebreo", - "y" : 2, - "drilldown" : "Yet Ebreo" - } - ] - } - ], "drilldown" : { "series" : [ { "id" : "Andrezgz", - "name" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Andrezgz" }, { - "id" : "Dave Cross", - "name" : "Dave Cross", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Dave Cross", + "name" : "Dave Cross" }, { "name" : "Dave Jacoby", @@ -169,18 +47,18 @@ "id" : "Dave Jacoby" }, { + "name" : "Duane Powell", "id" : "Duane Powell", "data" : [ [ "Perl 5", 2 ] - ], - "name" : "Duane Powell" + ] }, { - "id" : "E. Choroba", "name" : "E. Choroba", + "id" : "E. Choroba", "data" : [ [ "Perl 5", @@ -190,16 +68,34 @@ }, { "name" : "Fabrizio Poggi", + "id" : "Fabrizio Poggi", "data" : [ [ "Perl 5", 2 ] + ] + }, + { + "data" : [ + [ + "Perl 5", + 2 + ], + [ + "Perl 6", + 2 + ], + [ + "Blog", + 1 + ] ], - "id" : "Fabrizio Poggi" + "id" : "Javier Luque", + "name" : "Javier Luque" }, { - "id" : "Joelle Maslak", + "name" : "Joelle Maslak", "data" : [ [ "Perl 5", @@ -210,29 +106,30 @@ 2 ] ], - "name" : "Joelle Maslak" + "id" : "Joelle Maslak" }, { + "id" : "Lars Balker", "data" : [ [ "Perl 5", 2 ] ], - "name" : "Lars Balker", - "id" : "Lars Balker" + "name" : "Lars Balker" }, { "name" : "Lars Thegler", + "id" : "Lars Thegler", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Lars Thegler" + ] }, { + "name" : "Laurent Rosenfeld", "data" : [ [ "Perl 5", @@ -247,58 +144,57 @@ 1 ] ], - "name" : "Laurent Rosenfeld", "id" : "Laurent Rosenfeld" }, { - "id" : "Markus Holzer", + "name" : "Markus Holzer", "data" : [ [ "Perl 6", 2 ] ], - "name" : "Markus Holzer" + "id" : "Markus Holzer" }, { "name" : "Nazareno Delucca", + "id" : "Nazareno Delucca", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Nazareno Delucca" + ] }, { "name" : "Prajith P", + "id" : "Prajith P", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Prajith P" + ] }, { - "id" : "Rage311", - "name" : "Rage311", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Rage311", + "name" : "Rage311" }, { "name" : "Roger Bell West", + "id" : "Roger Bell West", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Roger Bell West" + ] }, { "id" : "Simon Proctor", @@ -311,24 +207,24 @@ "name" : "Simon Proctor" }, { - "id" : "Steven Wilson", "name" : "Steven Wilson", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Steven Wilson" }, { + "id" : "Ulrich Rieke", "data" : [ [ "Perl 5", 2 ] ], - "name" : "Ulrich Rieke", - "id" : "Ulrich Rieke" + "name" : "Ulrich Rieke" }, { "name" : "Yet Ebreo", @@ -341,5 +237,132 @@ "id" : "Yet Ebreo" } ] + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "legend" : { + "enabled" : 0 + }, + "xAxis" : { + "type" : "category" + }, + "chart" : { + "type" : "column" + }, + "series" : [ + { + "colorByPoint" : 1, + "data" : [ + { + "drilldown" : "Andrezgz", + "name" : "Andrezgz", + "y" : 2 + }, + { + "y" : 2, + "name" : "Dave Cross", + "drilldown" : "Dave Cross" + }, + { + "name" : "Dave Jacoby", + "y" : 2, + "drilldown" : "Dave Jacoby" + }, + { + "drilldown" : "Duane Powell", + "y" : 2, + "name" : "Duane Powell" + }, + { + "drilldown" : "E. Choroba", + "name" : "E. Choroba", + "y" : 2 + }, + { + "drilldown" : "Fabrizio Poggi", + "y" : 2, + "name" : "Fabrizio Poggi" + }, + { + "name" : "Javier Luque", + "y" : 5, + "drilldown" : "Javier Luque" + }, + { + "drilldown" : "Joelle Maslak", + "y" : 4, + "name" : "Joelle Maslak" + }, + { + "drilldown" : "Lars Balker", + "y" : 2, + "name" : "Lars Balker" + }, + { + "y" : 2, + "name" : "Lars Thegler", + "drilldown" : "Lars Thegler" + }, + { + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", + "y" : 5 + }, + { + "drilldown" : "Markus Holzer", + "name" : "Markus Holzer", + "y" : 2 + }, + { + "y" : 2, + "name" : "Nazareno Delucca", + "drilldown" : "Nazareno Delucca" + }, + { + "drilldown" : "Prajith P", + "name" : "Prajith P", + "y" : 2 + }, + { + "y" : 2, + "name" : "Rage311", + "drilldown" : "Rage311" + }, + { + "drilldown" : "Roger Bell West", + "name" : "Roger Bell West", + "y" : 2 + }, + { + "drilldown" : "Simon Proctor", + "y" : 2, + "name" : "Simon Proctor" + }, + { + "name" : "Steven Wilson", + "y" : 2, + "drilldown" : "Steven Wilson" + }, + { + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "y" : 2 + }, + { + "y" : 2, + "name" : "Yet Ebreo", + "drilldown" : "Yet Ebreo" + } + ], + "name" : "Perl Weekly Challenge - 032" + } + ], + "tooltip" : { + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : 1, + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index d6c3f4764f..7e3749b129 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -2,42 +2,39 @@ "series" : [ { "dataLabels" : { - "enabled" : "true", + "align" : "right", "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" }, - "rotation" : -90, - "y" : 10, "color" : "#FFFFFF", - "align" : "right", - "format" : "{point.y:.0f}" + "rotation" : -90, + "format" : "{point.y:.0f}", + "enabled" : "true", + "y" : 10 }, - "name" : "Contributions", "data" : [ [ "Blog", - 339 + 340 ], [ "Perl 5", - 1339 + 1341 ], [ "Perl 6", - 786 + 788 ] - ] + ], + "name" : "Contributions" } ], - "legend" : { - "enabled" : "false" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" - }, - "chart" : { - "type" : "column" + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 }, "xAxis" : { "type" : "category", @@ -48,16 +45,19 @@ } } }, - "subtitle" : { - "text" : "Last updated at 2019-10-31 15:15:14 GMT" + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : "false" }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 + "subtitle" : { + "text" : "Last updated at 2019-10-31 16:46:51 GMT" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 466d51ae5d..b8e74e2a17 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,45 +1,45 @@ { - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-10-31 15:15:14 GMT" - }, - "chart" : { - "type" : "column" - }, "xAxis" : { "type" : "category" }, - "title" : { - "text" : "Perl Weekly Challenge Language" + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } }, "series" : [ { - "colorByPoint" : "true", "name" : "Perl Weekly Challenge Languages", + "colorByPoint" : "true", "data" : [ { + "y" : 132, "drilldown" : "001", - "name" : "#001", - "y" : 132 + "name" : "#001" }, { "y" : 104, - "drilldown" : "002", - "name" : "#002" + "name" : "#002", + "drilldown" : "002" }, { - "drilldown" : "003", + "y" : 67, "name" : "#003", - "y" : 67 + "drilldown" : "003" }, { + "y" : 86, "name" : "#004", - "drilldown" : "004", - "y" : 86 + "drilldown" : "004" }, { + "y" : 66, "drilldown" : "005", - "name" : "#005", - "y" : 66 + "name" : "#005" }, { "drilldown" : "006", @@ -47,54 +47,54 @@ "y" : 48 }, { - "drilldown" : "007", + "y" : 56, "name" : "#007", - "y" : 56 + "drilldown" : "007" }, { - "name" : "#008", "drilldown" : "008", + "name" : "#008", "y" : 70 }, { - "y" : 68, "drilldown" : "009", - "name" : "#009" + "name" : "#009", + "y" : 68 }, { - "drilldown" : "010", "y" : 60, + "drilldown" : "010", "name" : "#010" }, { - "name" : "#011", "drilldown" : "011", + "name" : "#011", "y" : 78 }, { + "name" : "#012", "drilldown" : "012", - "y" : 83, - "name" : "#012" + "y" : 83 }, { + "name" : "#013", "drilldown" : "013", - "y" : 76, - "name" : "#013" + "y" : 76 }, { - "drilldown" : "014", + "y" : 96, "name" : "#014", - "y" : 96 + "drilldown" : "014" }, { + "name" : "#015", "drilldown" : "015", - "y" : 93, - "name" : "#015" + "y" : 93 }, { - "y" : 66, "drilldown" : "016", - "name" : "#016" + "name" : "#016", + "y" : 66 }, { "name" : "#017", @@ -102,13 +102,13 @@ "y" : 79 }, { - "drilldown" : "018", "name" : "#018", + "drilldown" : "018", "y" : 76 }, { - "name" : "#019", "drilldown" : "019", + "name" : "#019", "y" : 95 }, { @@ -117,14 +117,14 @@ "name" : "#020" }, { - "drilldown" : "021", + "y" : 67, "name" : "#021", - "y" : 67 + "drilldown" : "021" }, { - "name" : "#022", + "y" : 63, "drilldown" : "022", - "y" : 63 + "name" : "#022" }, { "drilldown" : "023", @@ -132,8 +132,8 @@ "y" : 91 }, { - "name" : "#024", "drilldown" : "024", + "name" : "#024", "y" : 70 }, { @@ -147,23 +147,23 @@ "y" : 70 }, { - "y" : 58, "drilldown" : "027", - "name" : "#027" + "name" : "#027", + "y" : 58 }, { - "name" : "#028", + "y" : 78, "drilldown" : "028", - "y" : 78 + "name" : "#028" }, { - "y" : 76, "drilldown" : "029", - "name" : "#029" + "name" : "#029", + "y" : 76 }, { - "drilldown" : "030", "name" : "#030", + "drilldown" : "030", "y" : 114 }, { @@ -172,35 +172,18 @@ "y" : 84 }, { - "name" : "#032", "drilldown" : "032", - "y" : 44 + "name" : "#032", + "y" : 49 } ] } ], - "legend" : { - "enabled" : "false" - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : "true" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, "drilldown" : { "series" : [ { @@ -218,8 +201,8 @@ 11 ] ], - "name" : "001", - "id" : "001" + "id" : "001", + "name" : "001" }, { "data" : [ @@ -290,8 +273,8 @@ 11 ] ], - "id" : "005", - "name" : "005" + "name" : "005", + "id" : "005" }, { "data" : [ @@ -308,10 +291,12 @@ 7 ] ], - "name" : "006", - "id" : "006" + "id" : "006", + "name" : "006" }, { + "id" : "007", + "name" : "007", "data" : [ [ "Perl 5", @@ -325,13 +310,9 @@ "Blog", 10 ] - ], - "id" : "007", - "name" : "007" + ] }, { - "name" : "008", - "id" : "008", "data" : [ [ "Perl 5", @@ -345,9 +326,13 @@ "Blog", 12 ] - ] + ], + "id" : "008", + "name" : "008" }, { + "name" : "009", + "id" : "009", "data" : [ [ "Perl 5", @@ -361,13 +346,9 @@ "Blog", 13 ] - ], - "name" : "009", - "id" : "009" + ] }, { - "name" : "010", - "id" : "010", "data" : [ [ "Perl 5", @@ -381,9 +362,13 @@ "Blog", 11 ] - ] + ], + "id" : "010", + "name" : "010" }, { + "name" : "011", + "id" : "011", "data" : [ [ "Perl 5", @@ -397,9 +382,7 @@ "Blog", 9 |
