diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-03-05 07:35:32 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-03-05 07:35:32 +0000 |
| commit | 67c3eb984b684e9bc48cd7a2de9dc4487226e70c (patch) | |
| tree | c1e014df233dcd4f01ff2cbf31cd927121e05fd7 | |
| parent | bece936a46afbfa066a96aef5f65b0e6a9c4bd32 (diff) | |
| download | perlweeklychallenge-club-67c3eb984b684e9bc48cd7a2de9dc4487226e70c.tar.gz perlweeklychallenge-club-67c3eb984b684e9bc48cd7a2de9dc4487226e70c.tar.bz2 perlweeklychallenge-club-67c3eb984b684e9bc48cd7a2de9dc4487226e70c.zip | |
- Added solutions by Kjetil Skotheim.
- Added solutions by Tyler Bird.
| -rw-r--r-- | challenge-206/tyler-bird/perl/ch-1.pl | 74 | ||||
| -rw-r--r-- | challenge-206/tyler-bird/perl/ch-2.pl | 83 | ||||
| -rw-r--r-- | stats/pwc-current.json | 244 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 60 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 1478 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 764 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 120 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 116 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 114 | ||||
| -rw-r--r-- | stats/pwc-summary-211-240.json | 100 | ||||
| -rw-r--r-- | stats/pwc-summary-241-270.json | 98 | ||||
| -rw-r--r-- | stats/pwc-summary-271-300.json | 70 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 620 |
17 files changed, 2208 insertions, 2021 deletions
diff --git a/challenge-206/tyler-bird/perl/ch-1.pl b/challenge-206/tyler-bird/perl/ch-1.pl new file mode 100644 index 0000000000..a815877b51 --- /dev/null +++ b/challenge-206/tyler-bird/perl/ch-1.pl @@ -0,0 +1,74 @@ +package main; + +use strict; +use warnings; + +use POSIX; + +print find_minimum_time_difference(["00:00", "23:55", "20:00"]) . "\n"; +print find_minimum_time_difference(["01:01", "00:50", "00:57"]) . "\n"; + +sub find_minimum_time_difference +{ + my($times_aref) = @_; + + my $minimum_diff; + + for(my $i = 0; $i < scalar(@{$times_aref}); $i++) { + for(my $j = 0; $j < scalar(@{$times_aref}); $j++) { + my $time_a = $times_aref->[$i]; + my $time_b = $times_aref->[$j]; + + # convert 00:00 to 24:00? + $time_a =~ s/00:00/24:00/g; + $time_b =~ s/00:00/24:00/g; + + if($i == $j) { + next; # skip comparing identical time differences i.e. i index = j index + } + + if(!$minimum_diff) { + $minimum_diff = time_diff($time_a, $time_b); + } else { + my $time_diff = time_diff($time_a, $time_b); + + if(number_of_minutes_in($time_diff) < number_of_minutes_in($minimum_diff)) { + $minimum_diff = $time_diff; + } + } + } + } + + if($minimum_diff) { + return $minimum_diff->{'hours'} . ' hours '. $minimum_diff->{'minutes'} . ' minutes'; + } +} + +sub number_of_minutes_in +{ + my($time_diff) = @_; + return ($time_diff->{'hours'} * 60) + $time_diff->{'minutes'}; +} + + +sub time_diff +{ + my($time_a, $time_b) = @_; + + my($hour_a, $minute_a) = split(/:/, $time_a); + my($hour_b, $minute_b) = split(/:/, $time_b); + + my $minutes_a = ($hour_a * 60) + $minute_a; + my $minutes_b = ($hour_b * 60) + $minute_b; + + my $diff_minutes = abs($minutes_a - $minutes_b); + my $hours_diff = floor($diff_minutes / 60); + my $minutes_diff = $diff_minutes % 60; + + return { + 'hours' => $hours_diff, + 'minutes' => $minutes_diff + }; +} + +1; diff --git a/challenge-206/tyler-bird/perl/ch-2.pl b/challenge-206/tyler-bird/perl/ch-2.pl new file mode 100644 index 0000000000..6f4e7b4819 --- /dev/null +++ b/challenge-206/tyler-bird/perl/ch-2.pl @@ -0,0 +1,83 @@ +package main; + +use strict; +use warnings; + +use List::Util qw(min); + +print max_of_min_pairs([1,2,3,4]) . "\n"; +print max_of_min_pairs([0,2,1,3]) . "\n"; + +sub max_of_min_pairs +{ + my($numbers_aref) = @_; + + my $max_sum = 0; + + my %unique_pairs = find_unique_pairs($numbers_aref); + + my @unique_pairs = values %unique_pairs; + + for(my $i = 0; $i < scalar(@unique_pairs); $i++) { + for(my $j = 0; $j < scalar(@unique_pairs); $j++) { + # do not compare a pair to itself, + if($i == $j) { + next; + } + + if(!pairs_have_unique_elements($unique_pairs[$i], $unique_pairs[$j])) { + next; + } + + my $sum = min(@{$unique_pairs[$i]}) + min(@{$unique_pairs[$j]}); + + if($sum > $max_sum) { + $max_sum = $sum; + } + } + } + + return $max_sum; +} + +sub find_unique_pairs +{ + my($numbers_aref) = @_; + + my %unique_pairs = (); + + for(my $i = 0; $i < scalar(@{$numbers_aref}); $i++) { + for(my $j = 0; $j < scalar(@${numbers_aref}); $j++){ + if($i == $j) { + next; + } + + my (@numbers_in_pair) = ($numbers_aref->[$i], $numbers_aref->[$j]); + my $pair_key = join(':', sort { $a <=> $b } @numbers_in_pair); + + if(! exists $unique_pairs{$pair_key}) { + $unique_pairs{$pair_key} = \@numbers_in_pair; + } + } + } + + return %unique_pairs; +} + +sub pairs_have_unique_elements +{ + my($element_a, $element_b) = @_; + + foreach my $number_a (@{$element_a}) { + foreach my $number_b (@{$element_b} ) { + if($number_b == $number_a) { + return 0; + } + } + } + + return 1; +} + +1; + diff --git a/stats/pwc-current.json b/stats/pwc-current.json index ea7172e0e3..845e6674e4 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,10 +1,16 @@ { - "legend" : { - "enabled" : 0 + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "xAxis" : { + "type" : "category" }, "drilldown" : { "series" : [ { + "name" : "Dave Jacoby", "data" : [ [ "Perl", @@ -15,18 +21,17 @@ 1 ] ], - "name" : "Dave Jacoby", "id" : "Dave Jacoby" }, { + "name" : "David Ferrone", + "id" : "David Ferrone", "data" : [ [ "Perl", 2 ] - ], - "id" : "David Ferrone", - "name" : "David Ferrone" + ] }, { "data" : [ @@ -39,6 +44,7 @@ "name" : "E. Choroba" }, { + "name" : "Flavio Poletti", "data" : [ [ "Perl", @@ -53,10 +59,10 @@ 2 ] ], - "id" : "Flavio Poletti", - "name" : "Flavio Poletti" + "id" : "Flavio Poletti" }, { + "id" : "James Smith", "data" : [ [ "Perl", @@ -67,22 +73,30 @@ 1 ] ], - "name" : "James Smith", - "id" : "James Smith" + "name" : "James Smith" }, { "id" : "Jorg Sommrey", - "name" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "Jorg Sommrey" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Kjetil Skotheim", + "name" : "Kjetil Skotheim" }, { "id" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -96,21 +110,20 @@ "Blog", 1 ] - ] + ], + "name" : "Laurent Rosenfeld" }, { - "name" : "Lubos Kolouch", - "id" : "Lubos Kolouch", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" }, { - "id" : "Luca Ferrari", - "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -120,17 +133,19 @@ "Blog", 6 ] - ] + ], + "id" : "Luca Ferrari", + "name" : "Luca Ferrari" }, { "name" : "Mariano Spadaccini", - "id" : "Mariano Spadaccini", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Mariano Spadaccini" }, { "name" : "Mark Anderson", @@ -159,21 +174,20 @@ 2 ] ], - "name" : "Niels van Dijke", - "id" : "Niels van Dijke" + "id" : "Niels van Dijke", + "name" : "Niels van Dijke" }, { - "name" : "Paulo Custodio", - "id" : "Paulo Custodio", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Paulo Custodio", + "name" : "Paulo Custodio" }, { - "id" : "Peter Campbell Smith", "name" : "Peter Campbell Smith", "data" : [ [ @@ -184,10 +198,10 @@ "Blog", 1 ] - ] + ], + "id" : "Peter Campbell Smith" }, { - "id" : "Robbie Hatley", "name" : "Robbie Hatley", "data" : [ [ @@ -198,11 +212,10 @@ "Blog", 1 ] - ] + ], + "id" : "Robbie Hatley" }, { - "id" : "Robert DiCicco", - "name" : "Robert DiCicco", "data" : [ [ "Perl", @@ -212,19 +225,22 @@ "Raku", 2 ] - ] + ], + "id" : "Robert DiCicco", + "name" : "Robert DiCicco" }, { "name" : "Robert Ransbottom", - "id" : "Robert Ransbottom", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Robert Ransbottom" }, { + "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -235,11 +251,9 @@ 2 ] ], - "id" : "Roger Bell_West", "name" : "Roger Bell_West" }, { - "id" : "Simon Green", "name" : "Simon Green", "data" : [ [ @@ -250,7 +264,8 @@ "Blog", 1 ] - ] + ], + "id" : "Simon Green" }, { "data" : [ @@ -263,8 +278,18 @@ 2 ] ], - "name" : "Thomas Kohler", - "id" : "Thomas Kohler" + "id" : "Thomas Kohler", + "name" : "Thomas Kohler" + }, + { + "id" : "Tyler Bird", + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Tyler Bird" }, { "data" : [ @@ -281,6 +306,8 @@ "name" : "Ulrich Rieke" }, { + "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -290,47 +317,67 @@ "Blog", 1 ] - ], - "id" : "W. Luis Mochan", - "name" : "W. Luis Mochan" + ] } ] }, + "title" : { + "text" : "The Weekly Challenge - 206" + }, + "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 + }, "subtitle" : { - "text" : "[Champions: 23] Last updated at 2023-03-04 17:46:01 GMT" + "text" : "[Champions: 25] Last updated at 2023-03-05 07:32:52 GMT" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } }, "series" : [ { "data" : [ { "name" : "Dave Jacoby", - "drilldown" : "Dave Jacoby", - "y" : 3 + "y" : 3, + "drilldown" : "Dave Jacoby" }, { - "drilldown" : "David Ferrone", "name" : "David Ferrone", + "drilldown" : "David Ferrone", "y" : 2 }, { "y" : 2, - "name" : "E. Choroba", - "drilldown" : "E. Choroba" + "drilldown" : "E. Choroba", + "name" : "E. Choroba" }, { "drilldown" : "Flavio Poletti", - "name" : "Flavio Poletti", - "y" : 6 + "y" : 6, + "name" : "Flavio Poletti" }, { - "drilldown" : "James Smith", "name" : "James Smith", + "drilldown" : "James Smith", "y" : 3 }, { + "y" : 2, "drilldown" : "Jorg Sommrey", - "name" : "Jorg Sommrey", - "y" : 2 + "name" : "Jorg Sommrey" + }, + { + "name" : "Kjetil Skotheim", + "y" : 2, + "drilldown" : "Kjetil Skotheim" }, { "name" : "Laurent Rosenfeld", @@ -338,79 +385,84 @@ "y" : 5 }, { - "drilldown" : "Lubos Kolouch", "name" : "Lubos Kolouch", + "drilldown" : "Lubos Kolouch", "y" : 2 }, { - "y" : 8, "drilldown" : "Luca Ferrari", + "y" : 8, "name" : "Luca Ferrari" }, { - "drilldown" : "Mariano Spadaccini", "name" : "Mariano Spadaccini", + "drilldown" : "Mariano Spadaccini", "y" : 2 }, { "drilldown" : "Mark Anderson", - "name" : "Mark Anderson", - "y" : 1 + "y" : 1, + "name" : "Mark Anderson" }, { + "drilldown" : "Marton Polgar", "y" : 2, - "name" : "Marton Polgar", - "drilldown" : "Marton Polgar" + "name" : "Marton Polgar" }, { - "name" : "Niels van Dijke", + "y" : 2, "drilldown" : "Niels van Dijke", - "y" : 2 + "name" : "Niels van Dijke" }, { "name" : "Paulo Custodio", - "drilldown" : "Paulo Custodio", - "y" : 2 + "y" : 2, + "drilldown" : "Paulo Custodio" }, { + "drilldown" : "Peter Campbell Smith", "y" : 3, - "name" : "Peter Campbell Smith", - "drilldown" : "Peter Campbell Smith" + "name" : "Peter Campbell Smith" }, { - "y" : 3, + "name" : "Robbie Hatley", "drilldown" : "Robbie Hatley", - "name" : "Robbie Hatley" + "y" : 3 }, { - "name" : "Robert DiCicco", "drilldown" : "Robert DiCicco", - "y" : 4 + "y" : 4, + "name" : "Robert DiCicco" }, { "name" : "Robert Ransbottom", - "drilldown" : "Robert Ransbottom", - "y" : 2 + "y" : 2, + "drilldown" : "Robert Ransbottom" }, { - "drilldown" : "Roger Bell_West", "name" : "Roger Bell_West", + "drilldown" : "Roger Bell_West", "y" : 4 }, { - "y" : 3, + "name" : "Simon Green", "drilldown" : "Simon Green", - "name" : "Simon Green" + "y" : 3 }, { "drilldown" : "Thomas Kohler", - "name" : "Thomas Kohler", - "y" : 4 + "y" : 4, + "name" : "Thomas Kohler" + }, + { + "name" : "Tyler Bird", + "y" : 2, + "drilldown" : "Tyler Bird" }, { "y" : 4, - "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke" + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke" }, { "name" : "W. Luis Mochan", @@ -418,36 +470,14 @@ "y" : 3 } ], - "name" : "The Weekly Challenge - 206", - "colorByPoint" : 1 + "colorByPoint" : 1, + "name" : "The Weekly Challenge - 206" } ], - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "title" : { - "text" : "The Weekly Challenge - 206" - }, - "xAxis" : { - "type" : "category" - }, "chart" : { "type" : "column" }, - "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 - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } + "legend" : { + "enabled" : 0 } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 0cda907635..3c44656670 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,31 +1,45 @@ { + "subtitle" : { + "text" : "Last updated at 2023-03-05 07:32:51 GMT" + }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, - "chart" : { - "type" : "column" + "title" : { + "text" : "The Weekly Challenge Contributions [2019 - 2023]" }, "xAxis" : { - "type" : "category", "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } - } - }, - "title" : { - "text" : "The Weekly Challenge Contributions [2019 - 2023]" + }, + "type" : "category" }, "yAxis" : { + "min" : 0, "title" : { "text" : null - }, - "min" : 0 + } + }, + "legend" : { + "enabled" : "false" }, "series" : [ { - "name" : "Contributions", + "dataLabels" : { + "color" : "#FFFFFF", + "align" : "right", + "format" : "{point.y:.0f}", + "y" : 10, + "enabled" : "true", + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "rotation" : -90 + }, "data" : [ [ "Blog", @@ -33,31 +47,17 @@ ], [ "Perl", - 10210 + 10214 ], [ "Raku", 6079 ] ], - "dataLabels" : { - "format" : "{point.y:.0f}", - "rotation" : -90, - "align" : "right", - "enabled" : "true", - "y" : 10, - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - }, - "color" : "#FFFFFF" - } + "name" : "Contributions" } ], - "subtitle" : { - "text" : "Last updated at 2023-03-04 17:46:01 GMT" - }, - "legend" : { - "enabled" : "false" + "chart" : { + "type" : "column" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index e2dcd2e04c..357f37957c 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,60 +1,35 @@ { - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, - "chart" : { - "type" : "column" - }, - "xAxis" : { - "type" : "category" - }, - "title" : { - "text" : "The Weekly Challenge Language" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "legend" : { + "enabled" : "false" }, "series" : [ { - "name" : "The Weekly Challenge Languages", + "colorByPoint" : "true", "data" : [ { - "y" : 161, "name" : "#001", + "y" : 161, "drilldown" : "001" }, { - "y" : 125, + "name" : "#002", "drilldown" : "002", - "name" : "#002" + "y" : 125 }, { + "drilldown" : "003", "y" : 83, - "name" : "#003", - "drilldown" : "003" + "name" : "#003" }, { - "y" : 99, "drilldown" : "004", + "y" : 99, "name" : "#004" }, { - "y" : 78, + "name" : "#005", "drilldown" : "005", - "name" : "#005" + "y" : 78 }, { "y" : 58, @@ -62,98 +37,98 @@ "name" : "#006" }, { + "drilldown" : "007", "y" : 65, - "name" : "#007", - "drilldown" : "007" + "name" : "#007" }, { - "name" : "#008", + "y" : 78, "drilldown" : "008", - "y" : 78 + "name" : "#008" }, { "name" : "#009", - "drilldown" : "009", - "y" : 76 + "y" : 76, + "drilldown" : "009" }, { "name" : "#010", - "drilldown" : "010", - "y" : 65 + "y" : 65, + "drilldown" : "010" }, { - "y" : 85, "drilldown" : "011", + "y" : 85, "name" : "#011" }, { "y" : 89, - "name" : "#012", - "drilldown" : "012" + "drilldown" : "012", + "name" : "#012" }, { "drilldown" : "013", - "name" : "#013", - "y" : 85 + "y" : 85, + "name" : "#013" }, { + "y" : 101, "drilldown" : "014", - "name" : "#014", - "y" : 101 + "name" : "#014" }, { - "drilldown" : "015", "name" : "#015", - "y" : 99 + "y" : 99, + "drilldown" : "015" }, { - "name" : "#016", + "y" : 71, "drilldown" : "016", - "y" : 71 + "name" : "#016" }, { - "y" : 84, "name" : "#017", - "drilldown" : "017" + "drilldown" : "017", + "y" : 84 }, { "y" : 81, - "name" : "#018", - "drilldown" : "018" + "drilldown" : "018", + "name" : "#018" }, { - "drilldown" : "019", "name" : "#019", - "y" : 103 + "y" : 103, + "drilldown" : "019" }, { "name" : "#020", - "drilldown" : "020", - "y" : 101 + "y" : 101, + "drilldown" : "020" }, { - "name" : "#021", "drilldown" : "021", - "y" : 72 + "y" : 72, + "name" : "#021" }, { - "drilldown" : "022", "name" : "#022", - "y" : 68 + "y" : 68, + "drilldown" : "022" }, { - "y" : 97, + "name" : "#023", "drilldown" : "023", - "name" : "#023" + "y" : 97 }, { - "name" : "#024", + "y" : 75, "drilldown" : "024", - "y" : 75 + "name" : "#024" }, { - "y" : 59, "drilldown" : "025", + "y" : 59, "name" : "#025" }, { @@ -162,59 +137,59 @@ "y" : 74 }, { + "drilldown" : "027", "y" : 62, - "name" : "#027", - "drilldown" : "027" + "name" : "#027" }, { "name" : "#028", - "drilldown" : "028", - "y" : 82 + "y" : 82, + "drilldown" : "028" }, { "y" : 81, - "name" : "#029", - "drilldown" : "029" + "drilldown" : "029", + "name" : "#029" }, { - "drilldown" : "030", "name" : "#030", + "drilldown" : "030", "y" : 119 }, { - "y" : 91, + "name" : "#031", "drilldown" : "031", - "name" : "#031" + "y" : 91 }, { - "y" : 96, + "name" : "#032", "drilldown" : "032", - "name" : "#032" + "y" : 96 }, { - "y" : 112, "name" : "#033", - "drilldown" : "033" + "drilldown" : "033", + "y" : 112 }, { + "drilldown" : "034", "y" : 66, - "name" : "#034", - "drilldown" : "034" + "name" : "#034" }, { - |
