diff options
| -rw-r--r-- | challenge-100/pete-houston/perl/ch-1.pl | 65 | ||||
| -rw-r--r-- | challenge-100/pete-houston/perl/ch-2.pl | 78 | ||||
| -rw-r--r-- | stats/pwc-current.json | 153 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 76 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 716 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 734 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 30 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-211-240.json | 68 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 50 | ||||
| -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 | 44 |
15 files changed, 1221 insertions, 1063 deletions
diff --git a/challenge-100/pete-houston/perl/ch-1.pl b/challenge-100/pete-houston/perl/ch-1.pl new file mode 100644 index 0000000000..71393d1fc2 --- /dev/null +++ b/challenge-100/pete-houston/perl/ch-1.pl @@ -0,0 +1,65 @@ +#!/usr/bin/env perl +#=============================================================================== +# +# FILE: 10001.pl +# +# USAGE: ./10001.pl [ STRING ] +# +# DESCRIPTION: Analyses input to determine if it is 12 or 24 hour clock +# and converts to the other. Runs tests if no argument. +# +# REQUIREMENTS: Test::More for the test suite. +# NOTES: The leading zero pad comes from the spec examples. +# AUTHOR: Pete Houston (pete), cpan@openstrike.co.uk +# ORGANIZATION: Openstrike +# VERSION: 1.0 +# CREATED: 15/02/21 +#=============================================================================== + +use strict; +use warnings; +use Test::More; + +if (0 < @ARGV) { + print clockit($ARGV[0]) . "\n"; + exit; +} + +sub clockit { + my $in = shift; + my ($h, $m, $i) = $in =~ /(\d{2})(:\d{2})(\s?[ap]m)?/i; + if ($i) { + # 12 to 24 + if ($i =~ /am/i) { + $h = '00' if $h eq '12'; + } elsif ($h < 12) { + $h += 12; + } + return "$h$m"; + } else { + # 24 to 12 + $i = $h > 11 ? 'pm' : 'am'; + $h %= 12 if $h > 12; + $h = '12' if $h eq '00'; + # Spec (examples) show padded leading zero + return sprintf "%2.2i$m$i", $h; + } +} + +my @tests = ( + { in => '05:15 pm', out => '17:15' }, + { in => '05:15pm', out => '17:15' }, + { in => '05:15am', out => '05:15' }, + { in => '12:15am', out => '00:15' }, + { in => '12:15pm', out => '12:15' }, + { in => '00:15', out => '12:15am' }, + { in => '05:59', out => '05:59am' }, + { in => '12:15', out => '12:15pm' }, + { in => '13:42', out => '01:42pm' }, +); + +plan tests => scalar @tests; + +for my $t (@tests) { + is clockit($t->{in}), $t->{out}, "$t->{in} becomes $t->{out}"; +} diff --git a/challenge-100/pete-houston/perl/ch-2.pl b/challenge-100/pete-houston/perl/ch-2.pl new file mode 100644 index 0000000000..e34b3b9afd --- /dev/null +++ b/challenge-100/pete-houston/perl/ch-2.pl @@ -0,0 +1,78 @@ +#!/usr/bin/env perl +#=============================================================================== +# +# FILE: 10002.pl +# +# USAGE: ./10002.pl < input_file +# +# DESCRIPTION: Minimum path sum down the triangle. Expects the triangle +# to be on STDIN with one row per line. Each entry is expected to be a +# whole number, separated from neighbours by non-digits. +# Example input_file: +# +# 1 +# 2 4 +# 6 4 9 +# 5 1 7 2 +# +# REQUIREMENTS: Perl 5.10, Class::Tiny, Ref::Util, List::Util +# NOTES: Perhaps not the most efficient, but I've been looking +# for an excuse to try Class::Tiny, so here it is. +# AUTHOR: Pete Houston (pete), cpan@openstrike.co.uk +# ORGANIZATION: Openstrike +# VERSION: 1.0 +# CREATED: 15/02/21 +#=============================================================================== + +use strict; +use warnings; +use 5.010; + +package Node; + +use Class::Tiny qw/lchild rchild value minval/; +use Ref::Util qw/is_ref is_arrayref/; +use List::Util 'min'; + +sub BUILDARGS { + my ($class, $init, $r, $c, $lastchild) = @_; + if (is_arrayref ($init)) { + # Buld tree from AoA + $r //= 0; + $c //= 0; + my $self = Node->new ($init->[$r][$c]); + + # Add children if we are not the bottom row + if ($r < $#$init) { + $self->lchild ( + $lastchild // + Node->new ($init, $r + 1, $c)); + $self->rchild (Node->new ($init, $r + 1, $c + 1, + $self->lchild->rchild)); + } + return $self; + } elsif (!is_ref ($init)) { + # Set value from scalar + return { value => $init }; + } + return {}; +} + +# Retrieve or calculate the minimum path downwards from here. +sub minsum { + my $self = shift; + unless (defined $self->minval) { + my $sum = $self->value; + $sum += min ($self->lchild->minsum, $self->rchild->minsum) if + defined $self->lchild; + $self->minval ($sum) + } + return $self->minval; +} + +package main; + +my @aoa = map { [/([0-9]+)/g] } <STDIN>; +my $root = Node->new (\@aoa); + +print $root->minsum . "\n"; diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 8979d5f38e..e72e6b7b5d 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,6 +1,15 @@ { - "subtitle" : { - "text" : "[Champions: 13] Last updated at 2021-02-16 17:55:38 GMT" + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "xAxis" : { + "type" : "category" }, "series" : [ { @@ -11,18 +20,18 @@ "drilldown" : "Alexander Karelas" }, { + "drilldown" : "Gustavo Chaves", "name" : "Gustavo Chaves", - "y" : 2, - "drilldown" : "Gustavo Chaves" + "y" : 2 }, { - "drilldown" : "James Smith", + "y" : 3, "name" : "James Smith", - "y" : 3 + "drilldown" : "James Smith" }, { - "name" : "Luca Ferrari", "y" : 4, + "name" : "Luca Ferrari", "drilldown" : "Luca Ferrari" }, { @@ -31,39 +40,44 @@ "y" : 1 }, { - "drilldown" : "Mohammad S Anwar", "y" : 1, - "name" : "Mohammad S Anwar" + "name" : "Mohammad S Anwar", + "drilldown" : "Mohammad S Anwar" + }, + { + "name" : "Pete Houston", + "drilldown" : "Pete Houston", + "y" : 2 }, { - "drilldown" : "Roger Bell_West", "y" : 4, + "drilldown" : "Roger Bell_West", "name" : "Roger Bell_West" }, { - "drilldown" : "Simon Green", "y" : 3, + "drilldown" : "Simon Green", "name" : "Simon Green" }, { - "drilldown" : "Simon Proctor", "name" : "Simon Proctor", + "drilldown" : "Simon Proctor", "y" : 2 }, { - "drilldown" : "Steven Wilson", "y" : 1, + "drilldown" : "Steven Wilson", "name" : "Steven Wilson" }, { - "drilldown" : "Stuart Little", + "y" : 4, "name" : "Stuart Little", - "y" : 4 + "drilldown" : "Stuart Little" }, { - "name" : "Vinod Kumar K", "y" : 1, - "drilldown" : "Vinod Kumar K" + "drilldown" : "Vinod Kumar K", + "name" : "Vinod Kumar K" }, { "y" : 3, @@ -71,44 +85,49 @@ "drilldown" : "W. Luis Mochan" } ], - "name" : "Perl Weekly Challenge - 100", - "colorByPoint" : 1 + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 100" } ], + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "chart" : { + "type" : "column" + }, "title" : { "text" : "Perl Weekly Challenge - 100" }, - "xAxis" : { - "type" : "category" - }, - "legend" : { - "enabled" : 0 + "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/>" }, "drilldown" : { "series" : [ { - "id" : "Alexander Karelas", - "name" : "Alexander Karelas", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "Alexander Karelas", + "id" : "Alexander Karelas" }, { - "name" : "Gustavo Chaves", "data" : [ [ "Perl", 2 ] ], - "id" : "Gustavo Chaves" + "id" : "Gustavo Chaves", + "name" : "Gustavo Chaves" }, { - "id" : "James Smith", - "name" : "James Smith", "data" : [ [ "Perl", @@ -118,9 +137,13 @@ "Blog", 1 ] - ] + ], + "name" : "James Smith", + "id" : "James Smith" }, { + "id" : "Luca Ferrari", + "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -130,33 +153,41 @@ "Blog", 2 ] - ], - "name" : "Luca Ferrari", - "id" : "Luca Ferrari" + ] }, { - "name" : "Mark Anderson", "data" : [ [ "Raku", 1 ] ], + "name" : "Mark Anderson", "id" : "Mark Anderson" }, { "id" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar", "data" : [ [ "Perl", 1 ] + ] + }, + { + "data" : [ + [ + "Perl", + 2 + ] ], - "name" : "Mohammad S Anwar" + "name" : "Pete Houston", + "id" : "Pete Houston" }, { - "id" : "Roger Bell_West", "name" : "Roger Bell_West", + "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -169,7 +200,6 @@ ] }, { - "id" : "Simon Green", "data" : [ [ "Perl", @@ -180,29 +210,31 @@ 1 ] ], - "name" : "Simon Green" + "name" : "Simon Green", + "id" : "Simon Green" }, { - "name" : "Simon Proctor", "data" : [ [ "Raku", 2 ] ], - "id" : "Simon Proctor" + "id" : "Simon Proctor", + "name" : "Simon Proctor" }, { - "id" : "Steven Wilson", "data" : [ [ "Perl", 1 ] ], - "name" : "Steven Wilson" + "name" : "Steven Wilson", + "id" : "Steven Wilson" }, { + "id" : "Stuart Little", "name" : "Stuart Little", "data" : [ [ @@ -213,8 +245,7 @@ "Raku", 2 ] - ], - "id" : "Stuart Little" + ] }, { "data" : [ @@ -227,8 +258,6 @@ "id" : "Vinod Kumar K" }, { - "id" : "W. Luis Mochan", - "name" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -238,30 +267,16 @@ "Blog", 1 ] - ] + ], + "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan" } ] }, - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "tooltip" : { - "followPointer" : 1, - "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/>" + "subtitle" : { + "text" : "[Champions: 14] Last updated at 2021-02-16 18:09:54 GMT" }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } + "legend" : { + "enabled" : 0 } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 1445409b5f..f8b295e2bb 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,18 +1,30 @@ { + "subtitle" : { + "text" : "Last updated at 2021-02-16 18:09:54 GMT" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "legend" : { + "enabled" : "false" + }, + "xAxis" : { + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + }, + "type" : "category" + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, "series" : [ { - "dataLabels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "rotation" : -90, - "format" : "{point.y:.0f}", - "color" : "#FFFFFF", - "y" : 10, - "align" : "right", - "enabled" : "true" - }, "data" : [ [ "Blog", @@ -20,43 +32,31 @@ ], [ "Perl", - 4661 + 4663 ], [ "Raku", 3004 ] ], - "name" : "Contributions" - } - ], - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "name" : "Contributions", + "dataLabels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + }, + "color" : "#FFFFFF", + "align" : "right", + "enabled" : "true", + "rotation" : -90, + "format" : "{point.y:.0f}", + "y" : 10 } } - }, + ], "title" : { "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" }, - "subtitle" : { - "text" : "Last updated at 2021-02-16 17:55:37 GMT" - }, - "legend" : { - "enabled" : "false" - }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, "chart" : { "type" : "column" } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 2606f7db66..74074f3796 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,6 +1,9 @@ { - "xAxis" : { - "type" : "category" + "chart" : { + "type" : "column" + }, + "title" : { + "text" : "Perl Weekly Challenge Language" }, "series" : [ { @@ -8,29 +11,29 @@ "name" : "Perl Weekly Challenge Languages", "data" : [ { - "name" : "#001", "y" : 155, + "name" : "#001", "drilldown" : "001" }, { - "name" : "#002", "y" : 120, + "name" : "#002", "drilldown" : "002" }, { - "name" : "#003", "y" : 77, + "name" : "#003", "drilldown" : "003" }, { + "drilldown" : "004", "name" : "#004", - "y" : 95, - "drilldown" : "004" + "y" : 95 }, { "y" : 76, - "name" : "#005", - "drilldown" : "005" + "drilldown" : "005", + "name" : "#005" }, { "y" : 56, @@ -39,23 +42,23 @@ }, { "name" : "#007", - "y" : 63, - "drilldown" : "007" + "drilldown" : "007", + "y" : 63 }, { - "drilldown" : "008", "y" : 76, - "name" : "#008" + "name" : "#008", + "drilldown" : "008" }, { - "name" : "#009", "y" : 74, + "name" : "#009", "drilldown" : "009" }, { - "y" : 64, "name" : "#010", - "drilldown" : "010" + "drilldown" : "010", + "y" : 64 }, { "y" : 83, @@ -63,49 +66,49 @@ "drilldown" : "011" }, { - "drilldown" : "012", "name" : "#012", + "drilldown" : "012", "y" : 87 }, { - "y" : 82, "name" : "#013", - "drilldown" : "013" + "drilldown" : "013", + "y" : 82 }, { "name" : "#014", - "y" : 100, - "drilldown" : "014" + "drilldown" : "014", + "y" : 100 }, { + "name" : "#015", "drilldown" : "015", - "y" : 97, - "name" : "#015" + "y" : 97 }, { "drilldown" : "016", - "y" : 70, - "name" : "#016" + "name" : "#016", + "y" : 70 }, { "y" : 83, - "name" : "#017", - "drilldown" : "017" + "drilldown" : "017", + "name" : "#017" }, { "drilldown" : "018", - "y" : 80, - "name" : "#018" + "name" : "#018", + "y" : 80 }, { - "name" : "#019", "y" : 101, - "drilldown" : "019" + "drilldown" : "019", + "name" : "#019" }, { + "drilldown" : "020", "name" : "#020", - "y" : 99, - "drilldown" : "020" + "y" : 99 }, { "y" : 71, @@ -113,48 +116,48 @@ "drilldown" : "021" }, { - "name" : "#022", "y" : 67, + "name" : "#022", "drilldown" : "022" }, { - "drilldown" : "023", "name" : "#023", + "drilldown" : "023", "y" : 95 }, { - "drilldown" : "024", "y" : 74, - "name" : "#024" + "name" : "#024", + "drilldown" : "024" }, { - "drilldown" : "025", "name" : "#025", + "drilldown" : "025", "y" : 59 }, { - "y" : 74, + "drilldown" : "026", "name" : "#026", - "drilldown" : "026" + "y" : 74 }, { - "y" : 60, + "drilldown" : "027", "name" : "#027", - "drilldown" : "027" + "y" : 60 }, { "drilldown" : "028", - "y" : 80, - "name" : "#028" + "name" : "#028", + "y" : 80 }, { - "drilldown" : "029", "y" : 79, + "drilldown" : "029", "name" : "#029" }, { - "name" : "#030", "y" : 117, + "name" : "#030", "drilldown" : "030" }, { @@ -164,13 +167,13 @@ }, { "y" : 94, - "name" : "#032", - "drilldown" : "032" + "drilldown" : "032", + "name" : "#032" }, { + "drilldown" : "033", "name" : "#033", - "y" : 110, - "drilldown" : "033" + "y" : 110 }, { "y" : 64, @@ -178,39 +181,39 @@ "drilldown" : "034" }, { + "name" : "#035", "drilldown" : "035", - "y" : 64, - "name" : "#035" + "y" : 64 }, { - "name" : "#036", "y" : 68, + "name" : "#036", "drilldown" : "036" }, { "name" : "#037", - "y" : 67, - "drilldown" : "037" + "drilldown" : "037", + "y" : 67 }, { - "y" : 67, + "drilldown" : "038", "name" : "#038", - "drilldown" : "038" + "y" : 67 }, { - "y" : 62, + "drilldown" : "039", "name" : "#039", - "drilldown" : "039" + "y" : 62 }, { - "drilldown" : "040", "y" : 73, + "drilldown" : "040", "name" : "#040" }, { + "y" : 76, "drilldown" : "041", - "name" : "#041", - "y" : 76 + "name" : "#041" }, { "drilldown" : "042", @@ -218,49 +221,49 @@ "y" : 90 }, { - "drilldown" : "043", "name" : "#043", + "drilldown" : "043", "y" : 68 }, { - "drilldown" : "044", + "y" : 84, "name" : "#044", - "y" : 84 + "drilldown" : "044" }, { - "drilldown" : "045", "y" : 96, + "drilldown" : "045", "name" : "#045" }, { - "drilldown" : "046", + "y" : 87, "name" : "#046", - "y" : 87 + "drilldown" : "046" }, { "name" : "#047", - "y" : 84, - "drilldown" : "047" + "drilldown" : "047", + "y" : 84 }, { - "name" : "#048", "y" : 108, - "drilldown" : "048" + "drilldown" : "048", + "name" : "#048" }, { - "drilldown" : "049", "y" : 89, - "name" : "#049" + "name" : "#049", + "drilldown" : "049" }, { + "drilldown" : "050", "name" : "#050", - "y" : 98, - "drilldown" : "050" + "y" : 98 }, { + "y" : 89, "drilldown" : "051", - "name" : "#051", - "y" : 89 + "name" : "#051" }, { "y" : 91, @@ -269,13 +272,13 @@ }, { "name" : "#053", - "y" : 101, - "drilldown" : "053" + "drilldown" : "053", + "y" : 101 }, { - "y" : 103, "name" : "#054", - "drilldown" : "054" + "drilldown" : "054", + "y" : 103 }, { "drilldown" : "055", @@ -288,9 +291,9 @@ "y" : 95 }, { + "y" : 80, "drilldown" : "057", - "name" : "#057", - "y" : 80 + "name" : "#057" }, { "y" : 69, @@ -298,108 +301,108 @@ "drilldown" : "058" }, { + "drilldown" : "059", "name" : "#059", - "y" : 89, - "drilldown" : "059" + "y" : 89 }, { - "y" : 85, "name" : "#060", - "drilldown" : "060" + "drilldown" : "060", + "y" : 85 }, { - "name" : "#061", "y" : 81, - "drilldown" : "061" + "drilldown" : "061", + "name" : "#061" }, { "drilldown" : "062", - "y" : 56, - "name" : "#062" + "name" : "#062", + "y" : 56 }, { + "drilldown" : "063", "name" : "#063", - "y" : 89, - "drilldown" : "063" + "y" : 89 }, { - "name" : "#064", "y" : 80, - "drilldown" : "064" + "drilldown" : "064", + "name" : "#064" }, { + "y" : 73, "drilldown" : "065", - "name" : "#065", - "y" : 73 + "name" : "#065" }, { + "drilldown" : "066", "name" : "#066", - "y" : 84, - "drilldown" : "066" + "y" : 84 }, { + "y" : 90, "drilldown" : "067", - "name" : "#067", - "y" : 90 + "name" : "#067" }, { - "name" : "#068", "y" : 75, - "drilldown" : "068" + "drilldown" : "068", + "name" : "#068" }, { - "y" : 83, "name" : "#069", - "drilldown" : "069" + "drilldown" : "069", + "y" : 83 }, { - "y" : 93, "name" : "#070", - "drilldown" : "070" + "drilldown" : "070", + "y" : 93 }, { - "name" : "#071", "y" : 78, - "drilldown" : "071" + "drilldown" : "071", + "name" : "#071" }, { "drilldown" : "072", - "y" : 112, - "name" : "#072" + "name" : "#072", + "y" : 112 }, { - "drilldown" : "073", "name" : "#073", + "drilldown" : "073", "y" : 110 }, { "y" : 115, - "name" : "#074", - "drilldown" : "074" + "drilldown" : "074", + "name" : "#074" }, { + "name" : "#075", "drilldown" : "075", - "y" : 113, - "name" : "#075" + "y" : 113 }, { - "name" : "#076", "y" : 99, + "name" : "#076", "drilldown" : "076" }, { "y" : 98, - "name" : "#077", - "drilldown" : "077" + "drilldown" : "077", + "name" : "#077" }, { "name" : "#078", - "y" : 127, - "drilldown" : "078" + "dri |
