diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-18 17:08:39 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-18 17:08:39 +0100 |
| commit | a0af2406a9628558b51170f69698941d8fd93eae (patch) | |
| tree | 3afe72b8c329583d5b5a31f390a4cc5371b7bcde | |
| parent | 918bc5f3106b38d6a388a99bf87a55e60a9cecb0 (diff) | |
| download | perlweeklychallenge-club-a0af2406a9628558b51170f69698941d8fd93eae.tar.gz perlweeklychallenge-club-a0af2406a9628558b51170f69698941d8fd93eae.tar.bz2 perlweeklychallenge-club-a0af2406a9628558b51170f69698941d8fd93eae.zip | |
- Added Perl solution to the "IPv4 Partition" task.
| -rw-r--r-- | challenge-061/mohammad-anwar/perl/ch-2.pl | 47 | ||||
| -rw-r--r-- | challenge-061/mohammad-anwar/perl/ch-2a.pl | 52 | ||||
| -rw-r--r-- | stats/pwc-current.json | 90 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 48 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 400 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 760 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 48 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 56 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 92 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 130 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 388 |
13 files changed, 1208 insertions, 1109 deletions
diff --git a/challenge-061/mohammad-anwar/perl/ch-2.pl b/challenge-061/mohammad-anwar/perl/ch-2.pl new file mode 100644 index 0000000000..5674f7c3b0 --- /dev/null +++ b/challenge-061/mohammad-anwar/perl/ch-2.pl @@ -0,0 +1,47 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my $S = $ARGV[0] || "25525511135"; +my @V = ipv4_partition($S); +print sprintf("%s = %s\n", $S, join (", ", @V)); + +sub ipv4_partition { + my ($ipv4_string) = @_; + + my @valid = (); + my $ipv4 = ''; + foreach my $i (1 .. length($ipv4_string)-3) { + foreach my $j ($i+1 .. length($ipv4_string)-2) { + foreach my $k ($j+1 .. length($ipv4_string)-1) { + $ipv4 = substr($ipv4, 0, $k) . "." . substr($ipv4, $k) + if (length($ipv4) >= $k); + $ipv4 = substr($ipv4, 0, $j) . "." . substr($ipv4, $j) + if (length($ipv4) >= $j); + $ipv4 = substr($ipv4, 0, $i) . "." . substr($ipv4, $i) + if (length($ipv4) >= $i); + + push @valid, $ipv4 if is_valid($ipv4); + $ipv4 = $ipv4_string; + } + } + } + + return @valid; +} + +sub is_valid { + my ($ipv4) = @_; + return 0 if (length($ipv4) == 0); + + foreach my $octet (split /\./, $ipv4) { + return 0 if ((length($octet) > 3) + || + ($octet > 255) + || + (length($octet) > 1 && $octet =~ /^0/)); + } + + return 1; +} diff --git a/challenge-061/mohammad-anwar/perl/ch-2a.pl b/challenge-061/mohammad-anwar/perl/ch-2a.pl new file mode 100644 index 0000000000..08e4ef920f --- /dev/null +++ b/challenge-061/mohammad-anwar/perl/ch-2a.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; + +my $S = "25525511135"; +my @V = ipv4_partition($S); + +is (join (", ", @V), "255.255.11.135, 255.255.111.35"); + +done_testing; + +sub ipv4_partition { + my ($ipv4_string) = @_; + + my @valid = (); + my $ipv4 = ''; + foreach my $i (1 .. length($ipv4_string)-3) { + foreach my $j ($i+1 .. length($ipv4_string)-2) { + foreach my $k ($j+1 .. length($ipv4_string)-1) { + $ipv4 = substr($ipv4, 0, $k) . "." . substr($ipv4, $k) + if (length($ipv4) >= $k); + $ipv4 = substr($ipv4, 0, $j) . "." . substr($ipv4, $j) + if (length($ipv4) >= $j); + $ipv4 = substr($ipv4, 0, $i) . "." . substr($ipv4, $i) + if (length($ipv4) >= $i); + + push @valid, $ipv4 if is_valid($ipv4); + $ipv4 = $ipv4_string; + } + } + } + + return @valid; +} + +sub is_valid { + my ($ipv4) = @_; + return 0 if (length($ipv4) == 0); + + foreach my $octet (split /\./, $ipv4) { + return 0 if ((length($octet) > 3) + || + ($octet > 255) + || + (length($octet) > 1 && $octet =~ /^0/)); + } + + return 1; +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 48a321307f..7bac08827b 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,27 +1,18 @@ { - "xAxis" : { - "type" : "category" - }, - "chart" : { - "type" : "column" - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "legend" : { - "enabled" : 0 - }, - "subtitle" : { - "text" : "[Champions: 6] Last updated at 2020-05-18 14:44:33 GMT" + "xAxis" : { + "type" : "category" }, "plotOptions" : { "series" : { "borderWidth" : 0, "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 + "enabled" : 1, + "format" : "{point.y}" } } }, @@ -46,6 +37,7 @@ "id" : "Javier Luque" }, { + "id" : "Luca Ferrari", "name" : "Luca Ferrari", "data" : [ [ @@ -56,31 +48,30 @@ "Blog", 2 ] - ], - "id" : "Luca Ferrari" + ] }, { - "id" : "Mark Anderson", + "name" : "Mark Anderson", "data" : [ [ "Raku", 1 ] ], - "name" : "Mark Anderson" + "id" : "Mark Anderson" }, { - "name" : "Mohammad S Anwar", + "id" : "Mohammad S Anwar", "data" : [ [ "Perl", - 1 + 2 ] ], - "id" : "Mohammad S Anwar" + "name" : "Mohammad S Anwar" }, { - "id" : "Roger Bell_West", + "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -91,40 +82,32 @@ 1 ] ], - "name" : "Roger Bell_West" + "id" : "Roger Bell_West" }, { + "id" : "Simon Proctor", + "name" : "Simon Proctor", "data" : [ [ "Raku", 2 ] - ], - "id" : "Simon Proctor", - "name" : "Simon Proctor" + ] } ] }, - "title" : { - "text" : "Perl Weekly Challenge - 061" - }, - "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 - }, "series" : [ { "data" : [ { - "y" : 5, + "drilldown" : "Javier Luque", "name" : "Javier Luque", - "drilldown" : "Javier Luque" + "y" : 5 }, { + "drilldown" : "Luca Ferrari", "y" : 4, - "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari" + "name" : "Luca Ferrari" }, { "drilldown" : "Mark Anderson", @@ -132,23 +115,40 @@ "y" : 1 }, { - "drilldown" : "Mohammad S Anwar", - "y" : 1, - "name" : "Mohammad S Anwar" + "name" : "Mohammad S Anwar", + "y" : 2, + "drilldown" : "Mohammad S Anwar" }, { - "y" : 3, + "drilldown" : "Roger Bell_West", "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West" + "y" : 3 }, { - "drilldown" : "Simon Proctor", + "y" : 2, "name" : "Simon Proctor", - "y" : 2 + "drilldown" : "Simon Proctor" } ], "name" : "Perl Weekly Challenge - 061", "colorByPoint" : 1 } - ] + ], + "chart" : { + "type" : "column" + }, + "subtitle" : { + "text" : "[Champions: 6] Last updated at 2020-05-18 16:08:24 GMT" + }, + "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 + }, + "title" : { + "text" : "Perl Weekly Challenge - 061" + }, + "legend" : { + "enabled" : 0 + } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index e7e01ef4fe..0e82a88f23 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,7 +1,4 @@ { - "legend" : { - "enabled" : "false" - }, "xAxis" : { "type" : "category", "labels" : { @@ -12,36 +9,24 @@ } }, "yAxis" : { + "min" : 0, "title" : { "text" : null - }, - "min" : 0 - }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "Last updated at 2020-05-18 14:44:33 GMT" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" + } }, "series" : [ { "dataLabels" : { + "format" : "{point.y:.0f}", "rotation" : -90, "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" }, "y" : 10, - "enabled" : "true", "align" : "right", - "color" : "#FFFFFF", - "format" : "{point.y:.0f}" + "enabled" : "true", + "color" : "#FFFFFF" }, "data" : [ [ @@ -50,7 +35,7 @@ ], [ "Perl", - 2545 + 2546 ], [ "Raku", @@ -59,5 +44,20 @@ ], "name" : "Contributions" } - ] + ], + "chart" : { + "type" : "column" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "subtitle" : { + "text" : "Last updated at 2020-05-18 16:08:23 GMT" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "legend" : { + "enabled" : "false" + } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 6916f43c95..dfe06e9463 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,17 +1,46 @@ { + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-05-18 16:08:24 GMT" + }, "tooltip" : { - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", "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" }, + "title" : { + "text" : "Perl Weekly Challenge Language" + }, + "legend" : { + "enabled" : "false" + }, + "chart" : { + "type" : "column" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "xAxis" : { + "type" : "category" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, "series" : [ { - "name" : "Perl Weekly Challenge Languages", + "colorByPoint" : "true", "data" : [ { "drilldown" : "001", - "y" : 142, - "name" : "#001" + "name" : "#001", + "y" : 142 }, { "y" : 109, @@ -19,24 +48,24 @@ "drilldown" : "002" }, { + "drilldown" : "003", "y" : 71, - "name" : "#003", - "drilldown" : "003" + "name" : "#003" }, { - "drilldown" : "004", + "y" : 91, "name" : "#004", - "y" : 91 + "drilldown" : "004" }, { + "drilldown" : "005", "name" : "#005", - "y" : 72, - "drilldown" : "005" + "y" : 72 }, { "drilldown" : "006", - "y" : 52, - "name" : "#006" + "name" : "#006", + "y" : 52 }, { "name" : "#007", @@ -44,9 +73,9 @@ "drilldown" : "007" }, { - "y" : 72, + "drilldown" : "008", "name" : "#008", - "drilldown" : "008" + "y" : 72 }, { "drilldown" : "009", @@ -54,9 +83,9 @@ "name" : "#009" }, { - "drilldown" : "010", "name" : "#010", - "y" : 60 + "y" : 60, + "drilldown" : "010" }, { "drilldown" : "011", @@ -75,12 +104,12 @@ }, { "drilldown" : "014", - "name" : "#014", - "y" : 96 + "y" : 96, + "name" : "#014" }, { - "name" : "#015", "y" : 93, + "name" : "#015", "drilldown" : "015" }, { @@ -94,9 +123,9 @@ "drilldown" : "017" }, { + "drilldown" : "018", "name" : "#018", - "y" : 76, - "drilldown" : "018" + "y" : 76 }, { "drilldown" : "019", @@ -105,22 +134,22 @@ }, { "drilldown" : "020", - "y" : 95, - "name" : "#020" + "name" : "#020", + "y" : 95 }, { - "y" : 67, + "drilldown" : "021", "name" : "#021", - "drilldown" : "021" + "y" : 67 }, { "drilldown" : "022", - "y" : 63, - "name" : "#022" + "name" : "#022", + "y" : 63 }, { - "y" : 91, "name" : "#023", + "y" : 91, "drilldown" : "023" }, { @@ -129,19 +158,19 @@ "drilldown" : "024" }, { + "drilldown" : "025", "name" : "#025", - "y" : 55, - "drilldown" : "025" + "y" : 55 }, { - "drilldown" : "026", "y" : 70, - "name" : "#026" + "name" : "#026", + "drilldown" : "026" }, { - "drilldown" : "027", "name" : "#027", - "y" : 58 + "y" : 58, + "drilldown" : "027" }, { "drilldown" : "028", @@ -150,43 +179,43 @@ }, { "drilldown" : "029", - "y" : 77, - "name" : "#029" + "name" : "#029", + "y" : 77 }, { + "drilldown" : "030", "y" : 115, - "name" : "#030", - "drilldown" : "030" + "name" : "#030" }, { - "y" : 87, "name" : "#031", + "y" : 87, "drilldown" : "031" }, { - "drilldown" : "032", + "name" : "#032", "y" : 92, - "name" : "#032" + "drilldown" : "032" }, { - "name" : "#033", "y" : 108, + "name" : "#033", "drilldown" : "033" }, { - "drilldown" : "034", + "name" : "#034", "y" : 62, - "name" : "#034" + "drilldown" : "034" }, { "drilldown" : "035", - "name" : "#035", - "y" : 62 + "y" : 62, + "name" : "#035" }, { + "drilldown" : "036", "y" : 66, - "name" : "#036", - "drilldown" : "036" + "name" : "#036" }, { "name" : "#037", @@ -194,9 +223,9 @@ "drilldown" : "037" }, { - "drilldown" : "038", "y" : 65, - "name" : "#038" + "name" : "#038", + "drilldown" : "038" }, { "y" : 60, @@ -215,13 +244,13 @@ }, { "drilldown" : "042", - "name" : "#042", - "y" : 88 + "y" : 88, + "name" : "#042" }, { - "drilldown" : "043", + "name" : "#043", "y" : 66, - "name" : "#043" + "drilldown" : "043" }, { "drilldown" : "044", @@ -234,14 +263,14 @@ "name" : "#045" }, { - "name" : "#046", + "drilldown" : "046", "y" : 85, - "drilldown" : "046" + "name" : "#046" }, { + "drilldown" : "047", "y" : 82, - "name" : "#047", - "drilldown" : "047" + "name" : "#047" }, { "y" : 106, @@ -249,8 +278,8 @@ "drilldown" : "048" }, { - "name" : "#049", "y" : 85, + "name" : "#049", "drilldown" : "049" }, { @@ -264,19 +293,19 @@ "y" : 87 }, { + "drilldown" : "052", "name" : "#052", - "y" : 89, - "drilldown" : "052" + "y" : 89 }, { - "drilldown" : "053", + "y" : 99, "name" : "#053", - "y" : 99 + "drilldown" : "053" }, { "drilldown" : "054", - "y" : 99, - "name" : "#054" + "name" : "#054", + "y" : 99 }, { "y" : 86, @@ -289,14 +318,14 @@ "drilldown" : "056" }, { - "drilldown" : "057", + "name" : "#057", "y" : 78, - "name" : "#057" + "drilldown" : "057" }, { "drilldown" : "058", - "name" : "#058", - "y" : 61 + "y" : 61, + "name" : "#058" }, { "y" : 82, @@ -304,40 +333,24 @@ "drilldown" : "059" }, { - "y" : 76, "name" : "#060", + "y" : 76, "drilldown" : "060" }, { - "drilldown" : "061", - "y" : 16, - "name" : "#061" + "y" : 17, + "name" : "#061", + "drilldown" : "061" } ], - "colorByPoint" : "true" + "name" : "Perl Weekly Challenge Languages" } ], - "legend" : { - "enabled" : "false" - }, - "xAxis" : { - "type" : "category" - }, - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-05-18 14:44:33 GMT" - }, "drilldown" : { "series" : [ { "id" : "001", + "name" : "001", "data" : [ [ "Perl", @@ -351,10 +364,10 @@ "Blog", 11 ] - ], - "name" : "001" + ] }, { + "name" : "002", "data" : [ [ "Perl", @@ -369,8 +382,7 @@ 10 ] ], - "id" : "002", - "name" : "002" + "id" : "002" }, { "data" : [ @@ -387,10 +399,12 @@ 9 ] ], - "id" : "003", - "name" : "003" + "name" : "003", + "id" : "003" }, { + "id" : "004", + "name" : "004", "data" : [ [ "Perl", @@ -404,11 +418,10 @@ "Blog", 10 ] - ], - "id" : "004", - "name" : "004" + ] }, { + "name" : "005", "data" : [ [ "Perl", @@ -423,11 +436,10 @@ 12 ] ], - "name" : "005", "id" : "005" }, { - "name" : "006", + "id" : "006", "data" : [ [ "Perl", @@ -442,10 +454,10 @@ 7 ] ], - "id" : "006" + "name" : "006" }, { - "name" : "007", + "id" : "007", "data" : [ [ "Perl", @@ -460,10 +472,10 @@ 10 ] ], - "id" : "007" + "name" : "007" }, { - "id" : "008", + "name" : "008", "data" : [ [ "Perl", @@ -478,9 +490,10 @@ 12 ] ], - "name" : "008" + "id" : "008" }, { + "id" : "009", "name" : "009", "data" : [ [ @@ -495,8 +508,7 @@ "Blog", 13 ] - ], - "id" : "009" + ] }, { "name" : "010", @@ -531,10 +543,11 @@ 10 ] ], - "id" : "011", - "name" : "011" + "name" : "011", + "id" : "011" }, { + "name" : "012", "data" : [ [ "Perl", @@ -549,11 +562,10 @@ 11 ] ], - "name" : "012", "id" : "012" }, { - "id" : "013", + "name" : "013", "data" : [ [ "Perl", @@ -568,9 +580,11 @@ 13 ] ], - "name" : "013" + "id" : "013" }, { + "id" : "014", + "name" : "014", "data" : [ [ "Perl", @@ -584,12 +598,9 @@ "Blog", 15 ] - ], - "name" : "014", - "id" : "014" + ] }, { - "id" : "015", "data" : [ [ "Perl", @@ -604,9 +615,11 @@ 15 ] ], - "name" : "015" + "name" : "015", + "id" : "015" }, { + "id" : "016", "name" : "016", "data" : [ [ @@ -621,10 +634,10 @@ "Blog", 12 ] - ], - "id" : "016" + ] }, { + "id" : "017", "data" : [ [ "Perl", @@ -639,7 +652,6 @@ 12 ] ], - "id" : "017", "name" : "017" }, { @@ -661,7 +673,6 @@ "id" : "018" }, { - "name" : "019", "data" : [ [ "Perl", @@ -676,6 +687,7 @@ 13 ] ], + "name" : "019", "id" : "019" }, { @@ -697,6 +709,7 @@ "id" : "020" }, { + "id" : "021", "data" : [ [ "Perl", @@ -711,7 +724,6 @@ 10 ] ], - "id" : "021", "name" : "021" }, { @@ -733,7 +745,6 @@ "id" : "022" }, { - "name" : "023", "data" : [ [ "Perl", @@ -748,9 +759,11 @@ 12 ] ], + "name" : "023", "id" : "023" }, { + "id" : "024", "data" : [ [ "Perl", @@ -765,11 +778,10 @@ 11 ] ], - "name" : "024", - "id" : "024" + "name" : "024" }, { - "id" : "025", + "name" : "025", "data" : [ [ "Perl", @@ -784,9 +796,10 @@ 12 ] ], - "name" : "025" + "id" : "025" }, { + "id" : "026", "data" : [ [ "Perl", @@ -801,8 +814,7 @@ 10 ] ], - "name" : "026", - "id" : "026" + "name" : "026" }, { "data" : [ @@ -819,11 +831,10 @@ 9 ] ], - "id" : "027", - "name" : "027" + "name" : "027", + "id" : "027" }, { - "name" : "028", "data" : [ [ "Perl", @@ -838,10 +849,11 @@ 9 ] ], + "name" : "028", "id" : "028" }, { - "id" : "029", + "name" : "029", "data" : [ [ "Perl", @@ -856,7 +868,7 @@ 12 ] ], - "name" : "029" + "id" : "029" }, { "data" : [ @@ -873,10 +885,11 @@ 10 ] ], - "id" : "030", - "name" : "030" + "name" : "030", + "id" : "030" }, { + "id" : "031", "data" : [ [ |
