diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-04-20 12:04:46 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-04-20 12:04:46 +0100 |
| commit | 71ecb0f7220269142d4274fffd04b40b4d8f7052 (patch) | |
| tree | dd64fe4c56957d7becca6243e732e1d7b74279f4 | |
| parent | b7394f415591b78ba0f96c31ce185d7c8663b584 (diff) | |
| download | perlweeklychallenge-club-71ecb0f7220269142d4274fffd04b40b4d8f7052.tar.gz perlweeklychallenge-club-71ecb0f7220269142d4274fffd04b40b4d8f7052.tar.bz2 perlweeklychallenge-club-71ecb0f7220269142d4274fffd04b40b4d8f7052.zip | |
- Added Perl solution to "Four Squares Puzzle" task of week 109.
| -rw-r--r-- | challenge-109/mohammad-anwar/perl/ch-2.pl | 89 | ||||
| -rw-r--r-- | stats/pwc-current.json | 206 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 56 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 716 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 758 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 116 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 34 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary-211-240.json | 64 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 110 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 114 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 44 |
14 files changed, 1324 insertions, 1235 deletions
diff --git a/challenge-109/mohammad-anwar/perl/ch-2.pl b/challenge-109/mohammad-anwar/perl/ch-2.pl new file mode 100644 index 0000000000..f062d02711 --- /dev/null +++ b/challenge-109/mohammad-anwar/perl/ch-2.pl @@ -0,0 +1,89 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; +use Test::Deep; + +is_deeply( solve_puzzle(1,2,3,4,5,6,7), + [ [7, 2, 6, 1, 3, 5, 4], + [7, 3, 2, 5, 1, 4, 6], + [6, 4, 5, 1, 2, 7, 3], + [6, 4, 1, 5, 2, 3, 7], + [4, 5, 3, 1, 6, 2, 7], + [5, 6, 2, 3, 1, 7, 4], + [3, 7, 2, 1, 5, 4, 6], + [4, 7, 1, 3, 2, 6, 5], ] ); + +done_testing; + +=head1 + + For my own sanity: + + Box 1 = a + b + Box 2 = b + c + d + Box 3 = d + e + f + Box 4 = f + g + + For the purpose of the puzzle, the sum of all boxes should + be a mulitple of 4. + + Box Sum = (a + b) + (b + c + d) + (d + e + f) + (f + g) + => (a + b + c + d + e + f + g) + (b + d + f) + => (Num Sum) + (b + d + f) + + Each Box Sum = ( (Num Sum) + (b + d + f) ) / 4 + + Now find the different combinations of b, d and f that + gives unique a, c, g and e as below: + + a = Each Box Sum - b + c = a - d + g = Each Box Sum - f + e = g - d + +=cut + +sub solve_puzzle { + my @n = @_; + + my $num_sum = 0; + $num_sum += $_ for @n; + + my $solutions = []; + foreach my $b (@n) { + my @may_be_d = grep { $b != $_ } @n; + foreach my $d (@may_be_d) { + my @may_be_f = grep { $d != $_ } @may_be_d; + foreach my $f (@may_be_f) { + my $box_sum = $b + $d + $f + $num_sum; + next unless ($box_sum % 4 == 0); + my $each_box_sum = $box_sum / 4; + + my %rem = map { $_ => 1 } @may_be_f; + delete $rem{$f}; + + my $a = $each_box_sum - $b; + next unless exists $rem{$a}; + delete $rem{$a}; + + my $c = $a - $d; + next unless exists $rem{$c}; + delete $rem{$c}; + + my $g = $each_box_sum - $f; + next unless exists $rem{$g}; + delete $rem{$g}; + + my $e = $g - $d; + next unless exists $rem{$e}; + + push @$solutions, [$a, $b, $c, $d, $e, $f, $g]; + } + } + } + + return $solutions; +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 84efa86f68..929a0a2b79 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,22 +1,95 @@ { + "series" : [ + { + "colorByPoint" : 1, + "data" : [ + { + "name" : "E. Choroba", + "drilldown" : "E. Choroba", + "y" : 2 + }, + { + "drilldown" : "Flavio Poletti", + "name" : "Flavio Poletti", + "y" : 4 + }, + { + "name" : "James Smith", + "drilldown" : "James Smith", + "y" : 2 + }, + { + "name" : "Mark Anderson", + "drilldown" : "Mark Anderson", + "y" : 2 + }, + { + "y" : 2, + "name" : "Mohammad S Anwar", + "drilldown" : "Mohammad S Anwar" + }, + { + "y" : 4, + "name" : "Roger Bell_West", + "drilldown" : "Roger Bell_West" + }, + { + "y" : 2, + "drilldown" : "Simon Green", + "name" : "Simon Green" + }, + { + "name" : "Simon Proctor", + "drilldown" : "Simon Proctor", + "y" : 2 + }, + { + "drilldown" : "Stuart Little", + "name" : "Stuart Little", + "y" : 4 + }, + { + "name" : "W. Luis Mochan", + "drilldown" : "W. Luis Mochan", + "y" : 3 + } + ], + "name" : "Perl Weekly Challenge - 109" + } + ], "subtitle" : { - "text" : "[Champions: 10] Last updated at 2021-04-20 02:30:55 GMT" + "text" : "[Champions: 10] Last updated at 2021-04-20 11:04:15 GMT" + }, + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : 0 + }, + "title" : { + "text" : "Perl Weekly Challenge - 109" + }, + "tooltip" : { + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", + "followPointer" : 1 + }, + "xAxis" : { + "type" : "category" }, "drilldown" : { "series" : [ { + "id" : "E. Choroba", "name" : "E. Choroba", "data" : [ [ "Perl", 2 ] - ], - "id" : "E. Choroba" + ] }, { - "name" : "Flavio Poletti", - "id" : "Flavio Poletti", "data" : [ [ "Perl", @@ -26,37 +99,39 @@ "Blog", 2 ] - ] + ], + "name" : "Flavio Poletti", + "id" : "Flavio Poletti" }, { + "id" : "James Smith", + "name" : "James Smith", "data" : [ [ "Perl", 2 ] - ], - "id" : "James Smith", - "name" : "James Smith" + ] }, { - "name" : "Mark Anderson", "id" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ] + ], + "name" : "Mark Anderson" }, { - "id" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar", "data" : [ [ "Perl", - 1 + 2 ] ], - "name" : "Mohammad S Anwar" + "id" : "Mohammad S Anwar" }, { "id" : "Roger Bell_West", @@ -73,28 +148,27 @@ "name" : "Roger Bell_West" }, { + "id" : "Simon Green", "name" : "Simon Green", "data" : [ [ "Perl", 2 ] - ], - "id" : "Simon Green" + ] }, { - "id" : "Simon Proctor", "data" : [ [ "Raku", 2 ] ], - "name" : "Simon Proctor" + "name" : "Simon Proctor", + "id" : "Simon Proctor" }, { "name" : "Stuart Little", - "id" : "Stuart Little", "data" : [ [ "Perl", @@ -104,10 +178,11 @@ "Raku", 2 ] - ] + ], + "id" : "Stuart Little" }, { - "id" : "W. Luis Mochan", + "name" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -118,97 +193,22 @@ 1 ] ], - "name" : "W. Luis Mochan" + "id" : "W. Luis Mochan" } ] }, - "title" : { - "text" : "Perl Weekly Challenge - 109" - }, - "series" : [ - { - "data" : [ - { - "y" : 2, - "name" : "E. Choroba", - "drilldown" : "E. Choroba" - }, - { - "y" : 4, - "name" : "Flavio Poletti", - "drilldown" : "Flavio Poletti" - }, - { - "drilldown" : "James Smith", - "name" : "James Smith", - "y" : 2 - }, - { - "name" : "Mark Anderson", - "y" : 2, - "drilldown" : "Mark Anderson" - }, - { - "drilldown" : "Mohammad S Anwar", - "name" : "Mohammad S Anwar", - "y" : 1 - }, - { - "drilldown" : "Roger Bell_West", - "name" : "Roger Bell_West", - "y" : 4 - }, - { - "drilldown" : "Simon Green", - "y" : 2, - "name" : "Simon Green" - }, - { - "name" : "Simon Proctor", - "y" : 2, - "drilldown" : "Simon Proctor" - }, - { - "drilldown" : "Stuart Little", - "name" : "Stuart Little", - "y" : 4 - }, - { - "drilldown" : "W. Luis Mochan", - "name" : "W. Luis Mochan", - "y" : 3 - } - ], - "colorByPoint" : 1, - "name" : "Perl Weekly Challenge - 109" - } - ], - "tooltip" : { - "followPointer" : 1, - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "xAxis" : { - "type" : "category" - }, - "legend" : { - "enabled" : 0 - }, "plotOptions" : { "series" : { "borderWidth" : 0, "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 + "enabled" : 1, + "format" : "{point.y}" } } }, - "chart" : { - "type" : "column" + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index bd9db147c3..b45bad5270 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,24 +1,19 @@ { - "subtitle" : { - "text" : "Last updated at 2021-04-20 02:30:55 GMT" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" - }, "series" : [ { "dataLabels" : { + "rotation" : -90, + "align" : "right", + "enabled" : "true", + "format" : "{point.y:.0f}", + "color" : "#FFFFFF", "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" }, - "enabled" : "true", - "rotation" : -90, - "format" : "{point.y:.0f}", - "y" : 10, - "align" : "right", - "color" : "#FFFFFF" + "y" : 10 }, + "name" : "Contributions", "data" : [ [ "Blog", @@ -26,38 +21,43 @@ ], [ "Perl", - 5127 + 5128 ], [ "Raku", 3253 ] - ], - "name" : "Contributions" + ] } ], - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" + "subtitle" : { + "text" : "Last updated at 2021-04-20 11:04:15 GMT" + }, + "chart" : { + "type" : "column" }, "legend" : { "enabled" : "false" }, - "chart" : { - "type" : "column" + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, "xAxis" : { - "type" : "category", "labels" : { "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" } - } + }, + "type" : "category" + }, + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index bd2989c2d7..7b2ee2f134 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,17 +1,25 @@ { + "legend" : { + "enabled" : "false" + }, + "chart" : { + "type" : "column" + }, + "title" : { + "text" : "Perl Weekly Challenge Language" + }, "series" : [ { - "colorByPoint" : "true", "data" : [ { - "y" : 161, + "drilldown" : "001", "name" : "#001", - "drilldown" : "001" + "y" : 161 }, { - "name" : "#002", "y" : 125, - "drilldown" : "002" + "drilldown" : "002", + "name" : "#002" }, { "drilldown" : "003", @@ -19,34 +27,34 @@ "y" : 81 }, { - "name" : "#004", "y" : 99, - "drilldown" : "004" + "drilldown" : "004", + "name" : "#004" }, { - "drilldown" : "005", "y" : 78, + "drilldown" : "005", "name" : "#005" }, { - "drilldown" : "006", "name" : "#006", + "drilldown" : "006", "y" : 58 }, { - "drilldown" : "007", "y" : 64, + "drilldown" : "007", "name" : "#007" }, { - "name" : "#008", "y" : 78, - "drilldown" : "008" + "drilldown" : "008", + "name" : "#008" }, { + "y" : 76, "drilldown" : "009", - "name" : "#009", - "y" : 76 + "name" : "#009" }, { "y" : 65, @@ -54,13 +62,13 @@ "drilldown" : "010" }, { - "drilldown" : "011", "y" : 85, - "name" : "#011" + "name" : "#011", + "drilldown" : "011" }, { - "name" : "#012", "y" : 89, + "name" : "#012", "drilldown" : "012" }, { @@ -75,42 +83,42 @@ }, { "name" : "#015", - "y" : 97, - "drilldown" : "015" + "drilldown" : "015", + "y" : 97 }, { - "drilldown" : "016", "y" : 70, + "drilldown" : "016", "name" : "#016" }, { + "name" : "#017", "drilldown" : "017", - "y" : 83, - "name" : "#017" + "y" : 83 }, { - "y" : 80, "name" : "#018", - "drilldown" : "018" + "drilldown" : "018", + "y" : 80 }, { + "drilldown" : "019", "name" : "#019", - "y" : 101, - "drilldown" : "019" + "y" : 101 }, { + "y" : 99, "drilldown" : "020", - "name" : "#020", - "y" : 99 + "name" : "#020" }, { - "y" : 71, "name" : "#021", - "drilldown" : "021" + "drilldown" : "021", + "y" : 71 }, { - "drilldown" : "022", "y" : 67, + "drilldown" : "022", "name" : "#022" }, { @@ -119,64 +127,64 @@ "drilldown" : "023" }, { - "drilldown" : "024", + "y" : 74, "name" : "#024", - "y" : 74 + "drilldown" : "024" }, { - "drilldown" : "025", "y" : 59, - "name" : "#025" + "name" : "#025", + "drilldown" : "025" }, { - "name" : "#026", "y" : 74, + "name" : "#026", "drilldown" : "026" }, { "y" : 60, - "name" : "#027", - "drilldown" : "027" + "drilldown" : "027", + "name" : "#027" }, { - "drilldown" : "028", "name" : "#028", + "drilldown" : "028", "y" : 80 }, { + "name" : "#029", "drilldown" : "029", - "y" : 79, - "name" : "#029" + "y" : 79 }, { + "y" : 117, "drilldown" : "030", - "name" : "#030", - "y" : 117 + "name" : "#030" }, { - "drilldown" : "031", "y" : 89, - "name" : "#031" + "name" : "#031", + "drilldown" : "031" }, { + "drilldown" : "032", "name" : "#032", - "y" : 94, - "drilldown" : "032" + "y" : 94 }, { "y" : 110, - "name" : "#033", - "drilldown" : "033" + "drilldown" : "033", + "name" : "#033" }, { + "drilldown" : "034", "name" : "#034", - "y" : 64, - "drilldown" : "034" + "y" : 64 }, { + "y" : 64, "drilldown" : "035", - "name" : "#035", - "y" : 64 + "name" : "#035" }, { "drilldown" : "036", @@ -184,74 +192,74 @@ "y" : 68 }, { + "drilldown" : "037", "name" : "#037", - "y" : 67, - "drilldown" : "037" + "y" : 67 }, { - "drilldown" : "038", + "y" : 67, "name" : "#038", - "y" : 67 + "drilldown" : "038" }, { + "y" : 62, "drilldown" : "039", - "name" : "#039", - "y" : 62 + "name" : "#039" }, { - "drilldown" : "040", "y" : 73, + "drilldown" : "040", "name" : "#040" }, { "drilldown" : "041", - "y" : 76, - "name" : "#041" + "name" : "#041", + "y" : 76 }, { "name" : "#042", - "y" : 92, - "drilldown" : "042" + "drilldown" : "042", + "y" : 92 }, { - "y" : 68, "name" : "#043", - "drilldown" : "043" + "drilldown" : "043", + "y" : 68 }, { "name" : "#044", - "y" : 85, - "drilldown" : "044" + "drilldown" : "044", + "y" : 85 }, { "y" : 96, - "name" : "#045", - "drilldown" : "045" + "drilldown" : "045", + "name" : "#045" }, { - "y" : 87, "name" : "#046", - "drilldown" : "046" + "drilldown" : "046", + "y" : 87 }, { - "drilldown" : "047", "y" : 84, - "name" : "#047" + "name" : "#047", + "drilldown" : "047" }, { - "drilldown" : "048", "y" : 108, + "drilldown" : "048", "name" : "#048" }, { - "y" : 89, "name" : "#049", - "drilldown" : "049" + "drilldown" : "049", + "y" : 89 }, { "name" : "#050", - "y" : 98, - "drilldown" : "050" + "drilldown" : "050", + "y" : 98 }, { "drilldown" : "051", @@ -259,119 +267,119 @@ "y" : 89 }, { - "name" : "#052", "y" : 91, - "drilldown" : "052" + "drilldown" : "052", + "name" : "#052" }, { - "name" : "#053", "y" : 101, + "name" : "#053", "drilldown" : "053" }, { "y" : 103, - "name" : "#054", - "drilldown" : "054" + "drilldown" : "054", + "name" : "#054" }, { "name" : "#055", - "y" : 88, - "drilldown" : "055" + "drilldown" : "055", + "y" : 88 }, { - "name" : "#056", "y" : 95, + "name" : "#056", "drilldown" : "056" }, { - "drilldown" : "057", "name" : "#057", + "drilldown" : "057", "y" : 80 }, { - "name" : "#058", "y" : 69, + "name" : "#058", "drilldown" : "058" }, { - "name" : "#059", "y" : 89, - "drilldown" : "059" + "drilldown" : "059", + "name" : "#059" }, { - "y" : 85, "name" : "#060", - "drilldown" : "060" + "drilldown" : "060", + "y" : 85 }, { - "drilldown" : "061", "name" : "#061", + "drilldown" : "061", "y" : 81 }, { - "name" : "#062", "y" : 56, - "drilldown" : "062" + "drilldown" : "062", + "name" : "#062" }, { "name" : "#063", - "y" : 89, - "drilldown" : "063" + "drilldown" : "063", + "y" : 89 }, { "y" : 80, - "name" : "#064", - "drilldown" : "064" + "drilldown" : "064", + "name" : "#064" }, { - "y" : 73, + "drilldown" : "065", "name" : "#065", - "drilldown" : "065" + "y" : 73 }, { + "drilldown" : "066", "name" : "#066", - "y" : 84, - "drilldown" : "066" + "y" : 84 }, { - "name" : "#067", "y" : 90, - "drilldown" : "067" + "drilldown" : "067", + "name" : "#067" }, { + "drilldown" : "068", "name" : "#068", - "y" : 75, - "drilldown" : "068" + "y" : 75 }, { "y" : 83, - "name" : "#069", - "drilldown" : "069" + "drilldown" : "069", + "name" : "#069" }, { - "drilldown" : "070", + "y" : 93, "name" : "#070", - "y" : 93 + "drilldown" : "070" }, { "drilldown" : "071", - "y" : 78, - "name" : "#071" + "name" : "#071", + "y" : 78 }, { + "y" : 112, "drilldown" : "072", - "name" : "#072", - "y" : 112 + "name" : "#072" }, { - "name" : "#073", "y" : 110, - "drilldown" : "073" + "drilldown" : "073", + "name" : "#073" }, { - "drilldown" : "074", "y" : 115, - "name" : "#074" + "name" : "#074", + "drilldown" : "074" }, { "y" : 113, @@ -379,8 +387,8 @@ "drilldown" : "075" }, { - "drilldown" : "076", "name" : "#076", + "drilldown" : "076", "y" : 99 }, { @@ -389,29 +397,29 @@ "y" : 98 }, { + "name" : "#078", "drilldown" : "078", - "y" : 127, - "name" : "#078" + "y" : 127 }, { "name" : "#079", - "y" : 122, - "drilldown" : "079" + "drilldown" : "079", + "y" : 122 }, { - "y" : 127, + "drilldown" : "080", "name" : "#080", - "drilldown" : "080" + "y" : 127 }, { - "drilldown" : "081", "y" : 114, - "name" : "#081" + "name" : "#081", + "drilldown" : "081" }, { - "y" : 114, "name" : "#082", - "drilldown" : "082" + "drilldown" : "082", + "y" : 114 }, { "drilldown" : "083", @@ -424,24 +432,24 @@ "y" : 119 }, { + "name" : "#085", "drilldown" : "085", - "y" : 114, - "name" : "#085" + "y" : 114 }, { - "drilldown" : "086", "y" : 104, + "drilldown" : "086", "name" : "#086" }, { - "drilldown" : "087", "y" : 101, - "name" : "#087" + "name" : "#087", + "drilldown" : "087" }, { - "drilldown" : "088", + "y" : 121, "name" : "#088", - "y" : 121 + "drilldown" : "088" }, { "y" : 113, @@ -449,24 +457,24 @@ "drilldown" : "089" |
