diff options
| -rwxr-xr-x | challenge-070/mohammad-anwar/perl/ch-1.pl | 32 | ||||
| -rwxr-xr-x | challenge-070/mohammad-anwar/perl/ch-1a.pl | 29 | ||||
| -rwxr-xr-x | challenge-070/mohammad-anwar/perl/ch-2.pl | 45 | ||||
| -rwxr-xr-x | challenge-070/mohammad-anwar/perl/ch-2a.pl | 52 | ||||
| -rw-r--r-- | stats/pwc-current.json | 125 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 68 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 998 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 744 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 98 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 88 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 96 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 52 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 384 |
15 files changed, 1530 insertions, 1357 deletions
diff --git a/challenge-070/mohammad-anwar/perl/ch-1.pl b/challenge-070/mohammad-anwar/perl/ch-1.pl new file mode 100755 index 0000000000..c425cf29ae --- /dev/null +++ b/challenge-070/mohammad-anwar/perl/ch-1.pl @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +# +# Perl Weekly Challenge - 070 +# +# Task #1: Character Swapping +# +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-070 +# + +use strict; +use warnings; + +my $S = $ARGV[0] || 'perlandraku'; +my $C = $ARGV[1] || 3; +my $O = $ARGV[2] || 4; + +print sprintf("%s => %s\n", $S, swap($S, $C, $O)); + +sub swap { + my ($string, $count, $offset) = @_; + + my $length = length($string); + my @array = split //, $string; + foreach my $i (1..$count) { + my $a = $i % $length; + my $b = ($i + $offset) % $length; + ($array[$a], $array[$b]) = ($array[$b], $array[$a]); + } + + return join '', @array; +} diff --git a/challenge-070/mohammad-anwar/perl/ch-1a.pl b/challenge-070/mohammad-anwar/perl/ch-1a.pl new file mode 100755 index 0000000000..a84a6d8078 --- /dev/null +++ b/challenge-070/mohammad-anwar/perl/ch-1a.pl @@ -0,0 +1,29 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; + +is(swap('perlandraku', 3, 4), + 'pndraerlaku', + 'testing perlandraku.'); +is(swap('weeklychallenge', 5, 2), + 'wklycheeallenge', + 'testing weeklychallenge.'); + +done_testing; + +sub swap { + my ($string, $count, $offset) = @_; + + my $length = length($string); + my @array = split //, $string; + foreach my $i (1..$count) { + my $a = $i % $length; + my $b = ($i + $offset) % $length; + ($array[$a], $array[$b]) = ($array[$b], $array[$a]); + } + + return join '', @array; +} diff --git a/challenge-070/mohammad-anwar/perl/ch-2.pl b/challenge-070/mohammad-anwar/perl/ch-2.pl new file mode 100755 index 0000000000..e18b5a9de6 --- /dev/null +++ b/challenge-070/mohammad-anwar/perl/ch-2.pl @@ -0,0 +1,45 @@ +#!/usr/bin/perl + +# +# Perl Weekly Challenge - 070 +# +# Task #2: Gray Code Sequence +# +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-070 +# + +use strict; +use warnings; + +my $N = $ARGV[0] || 3; + +print sprintf("%d-bit Gray Code Sequence:\n[%s]\n", + $N, join ', ', generate_gray_code_sequence($N)); + +sub generate_gray_code_sequence { + my ($n) = @_; + + my %S = ( + 2 => ['00', '01', '11', '10'], + ); + + foreach my $i (3 .. $n) { + my $S1 = $S{$i - 1}; + my $S2 = [ reverse @$S1 ]; + $_ = '0' . $_ foreach @$S1; + $_ = '1' . $_ foreach @$S2; + $S{$i} = [ @$S1, @$S2 ]; + } + + my @gray_codes = (); + push @gray_codes, bin2dec($_) foreach (@{$S{$n}}); + + return @gray_codes; +} + +# Borrowed from Perl Cookbook +# https://www.oreilly.com/library/view/perl-cookbook/1565922433/ch02s05.html + +sub bin2dec { + return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); +} diff --git a/challenge-070/mohammad-anwar/perl/ch-2a.pl b/challenge-070/mohammad-anwar/perl/ch-2a.pl new file mode 100755 index 0000000000..dcbb7654f8 --- /dev/null +++ b/challenge-070/mohammad-anwar/perl/ch-2a.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl + +# +# Perl Weekly Challenge - 070 +# +# Task #2: Gray Code Sequence +# +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-070 +# + +use strict; +use warnings; + +use Test::More; +use Test::Deep; + +is_deeply( [ generate_gray_code_sequence(3) ], + [ 0, 1, 3, 2, 6, 7, 5, 4 ], + 'testing 3-bit gray code sequence' ); +is_deeply( [ generate_gray_code_sequence(4) ], + [ 0, 1, 3, 2, 6, 7, 5, 4, 12, 13, 15, 14, 10, 11, 9, 8 ], + 'testing 4-bit gray code sequence' ); + +done_testing; + +sub generate_gray_code_sequence { + my ($n) = @_; + + my %S = ( + 2 => ['00', '01', '11', '10'], + ); + + foreach my $i (3 .. $n) { + my $S1 = $S{$i - 1}; + my $S2 = [ reverse @$S1 ]; + $_ = '0' . $_ foreach @$S1; + $_ = '1' . $_ foreach @$S2; + $S{$i} = [ @$S1, @$S2 ]; + } + + my @gray_codes = (); + push @gray_codes, bin2dec($_) foreach (@{$S{$n}}); + + return @gray_codes; +} + +# Borrowed from Perl Cookbook +# https://www.oreilly.com/library/view/perl-cookbook/1565922433/ch02s05.html + +sub bin2dec { + return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index dd2280d6bf..4528d8f1cb 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,16 +1,41 @@ { - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } + "series" : [ + { + "data" : [ + { + "y" : 4, + "drilldown" : "Andrew Shitov", + "name" : "Andrew Shitov" + }, + { + "y" : 5, + "name" : "Javier Luque", + "drilldown" : "Javier Luque" + }, + { + "name" : "Mohammad S Anwar", + "drilldown" : "Mohammad S Anwar", + "y" : 2 + }, + { + "y" : 4, + "name" : "Roger Bell_West", + "drilldown" : "Roger Bell_West" + }, + { + "y" : 3, + "drilldown" : "Simon Green", + "name" : "Simon Green" + } + ], + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 070" } - }, + ], "drilldown" : { "series" : [ { + "name" : "Andrew Shitov", "data" : [ [ "Raku", @@ -21,11 +46,9 @@ 2 ] ], - "id" : "Andrew Shitov", - "name" : "Andrew Shitov" + "id" : "Andrew Shitov" }, { - "id" : "Javier Luque", "name" : "Javier Luque", "data" : [ [ @@ -40,11 +63,21 @@ "Blog", 1 ] + ], + "id" : "Javier Luque" + }, + { + "name" : "Mohammad S Anwar", + "id" : "Mohammad S Anwar", + "data" : [ + [ + "Perl", + 2 + ] ] }, { "id" : "Roger Bell_West", - "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -54,7 +87,8 @@ "Raku", 2 ] - ] + ], + "name" : "Roger Bell_West" }, { "data" : [ @@ -72,57 +106,38 @@ } ] }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "subtitle" : { + "text" : "[Champions: 5] Last updated at 2020-07-20 10:56:00 GMT" }, - "legend" : { - "enabled" : 0 + "xAxis" : { + "type" : "category" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + } + } }, "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/>" - }, - "xAxis" : { - "type" : "category" + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", + "followPointer" : 1 }, - "chart" : { - "type" : "column" + "legend" : { + "enabled" : 0 }, - "series" : [ - { - "data" : [ - { - "drilldown" : "Andrew Shitov", - "y" : 4, - "name" : "Andrew Shitov" - }, - { - "drilldown" : "Javier Luque", - "name" : "Javier Luque", - "y" : 5 - }, - { - "drilldown" : "Roger Bell_West", - "name" : "Roger Bell_West", - "y" : 4 - }, - { - "y" : 3, - "name" : "Simon Green", - "drilldown" : "Simon Green" - } - ], - "name" : "Perl Weekly Challenge - 070", - "colorByPoint" : 1 + "yAxis" : { + "title" : { + "text" : "Total Solutions" } - ], - "subtitle" : { - "text" : "[Champions: 4] Last updated at 2020-07-20 10:25:23 GMT" }, "title" : { "text" : "Perl Weekly Challenge - 070" + }, + "chart" : { + "type" : "column" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 97b4db7e2d..cda03e06f1 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -2,6 +2,33 @@ "chart" : { "type" : "column" }, + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "legend" : { + "enabled" : "false" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "xAxis" : { + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + }, + "type" : "category" + }, + "subtitle" : { + "text" : "Last updated at 2020-07-20 10:56:00 GMT" + }, "series" : [ { "data" : [ @@ -11,7 +38,7 @@ ], [ "Perl", - 2865 + 2867 ], [ "Raku", @@ -19,45 +46,18 @@ ] ], "dataLabels" : { - "enabled" : "true", - "color" : "#FFFFFF", + "format" : "{point.y:.0f}", + "align" : "right", + "y" : 10, "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" }, - "y" : 10, + "color" : "#FFFFFF", "rotation" : -90, - "align" : "right", - "format" : "{point.y:.0f}" + "enabled" : "true" }, "name" : "Contributions" } - ], - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" - }, - "subtitle" : { - "text" : "Last updated at 2020-07-20 10:25:23 GMT" - }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - } - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "legend" : { - "enabled" : "false" - }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - } + ] } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 18d00bb150..e316bf405f 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,391 +1,23 @@ { - "tooltip" : { - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", - "headerFormat" : "<span style=\"font-size:11px\"></span>" + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } }, "xAxis" : { "type" : "category" }, - "chart" : { - "type" : "column" - }, - "series" : [ - { - "colorByPoint" : "true", - "name" : "Perl Weekly Challenge Languages", - "data" : [ - { - "drilldown" : "001", - "y" : 142, - "name" : "#001" - }, - { - "drilldown" : "002", - "name" : "#002", - "y" : 109 - }, - { - "drilldown" : "003", - "name" : "#003", - "y" : 71 - }, - { - "drilldown" : "004", - "y" : 91, - "name" : "#004" - }, - { - "y" : 72, - "name" : "#005", - "drilldown" : "005" - }, - { - "drilldown" : "006", - "name" : "#006", - "y" : 52 - }, - { - "drilldown" : "007", - "name" : "#007", - "y" : 59 - }, - { - "drilldown" : "008", - "y" : 72, - "name" : "#008" - }, - { - "drilldown" : "009", - "name" : "#009", - "y" : 68 - }, - { - "y" : 60, - "name" : "#010", - "drilldown" : "010" - }, - { - "y" : 79, - "name" : "#011", - "drilldown" : "011" - }, - { - "drilldown" : "012", - "name" : "#012", - "y" : 83 - }, - { - "drilldown" : "013", - "y" : 76, - "name" : "#013" - }, - { - "name" : "#014", - "y" : 96, - "drilldown" : "014" - }, - { - "name" : "#015", - "y" : 93, - "drilldown" : "015" - }, - { - "name" : "#016", - "y" : 66, - "drilldown" : "016" - }, - { - "y" : 79, - "name" : "#017", - "drilldown" : "017" - }, - { - "y" : 76, - "name" : "#018", - "drilldown" : "018" - }, - { - "drilldown" : "019", - "name" : "#019", - "y" : 97 - }, - { - "drilldown" : "020", - "name" : "#020", - "y" : 95 - }, - { - "y" : 67, - "name" : "#021", - "drilldown" : "021" - }, - { - "name" : "#022", - "y" : 63, - "drilldown" : "022" - }, - { - "drilldown" : "023", - "y" : 91, - "name" : "#023" - }, - { - "y" : 70, - "name" : "#024", - "drilldown" : "024" - }, - { - "drilldown" : "025", - "y" : 55, - "name" : "#025" - }, - { - "name" : "#026", - "y" : 70, - "drilldown" : "026" - }, - { - "drilldown" : "027", - "y" : 58, - "name" : "#027" - }, - { - "drilldown" : "028", - "y" : 78, - "name" : "#028" - }, - { - "y" : 77, - "name" : "#029", - "drilldown" : "029" - }, - { - "name" : "#030", - "y" : 115, - "drilldown" : "030" - }, - { - "name" : "#031", - "y" : 87, - "drilldown" : "031" - }, - { - "drilldown" : "032", - "name" : "#032", - "y" : 92 - }, - { - "drilldown" : "033", - "y" : 108, - "name" : "#033" - }, - { - "drilldown" : "034", - "y" : 62, - "name" : "#034" - }, - { - "drilldown" : "035", - "name" : "#035", - "y" : 62 - }, - { - "drilldown" : "036", - "name" : "#036", - "y" : 66 - }, - { - "drilldown" : "037", - "y" : 65, - "name" : "#037" - }, - { - "drilldown" : "038", - "y" : 65, - "name" : "#038" - }, - { - "drilldown" : "039", - "name" : "#039", - "y" : 60 - }, - { - "drilldown" : "040", - "name" : "#040", - "y" : 71 - }, - { - "drilldown" : "041", - "name" : "#041", - "y" : 74 - }, - { - "y" : 88, - "name" : "#042", - "drilldown" : "042" - }, - { - "y" : 66, - "name" : "#043", - "drilldown" : "043" - }, - { - "y" : 82, - "name" : "#044", - "drilldown" : "044" - }, - { - "name" : "#045", - "y" : 94, - "drilldown" : "045" - }, - { - "drilldown" : "046", - "y" : 85, - "name" : "#046" - }, - { - "y" : 82, - "name" : "#047", - "drilldown" : "047" - }, - { - "drilldown" : "048", - "y" : 106, - "name" : "#048" - }, - { - "y" : 85, - "name" : "#049", - "drilldown" : "049" - }, - { - "name" : "#050", - "y" : 96, - "drilldown" : "050" - }, - { - "drilldown" : "051", - "y" : 87, - "name" : "#051" - }, - { - "name" : "#052", - "y" : 89, - "drilldown" : "052" - }, - { - "name" : "#053", - "y" : 99, - "drilldown" : "053" - }, - { - "drilldown" : "054", - "name" : "#054", - "y" : 101 - }, - { - "drilldown" : "055", - "name" : "#055", - "y" : 86 - }, - { - "y" : 93, - "name" : "#056", - "drilldown" : "056" - }, - { - "name" : "#057", - "y" : 78, - "drilldown" : "057" - }, - { - "drilldown" : "058", - "y" : 62, - "name" : "#058" - }, - { - "drilldown" : "059", - "name" : "#059", - "y" : 82 - }, - { - "drilldown" : "060", - "name" : "#060", - "y" : 78 - }, - { - "drilldown" : "061", - "name" : "#061", - "y" : 79 - }, - { - "y" : 54, - "name" : "#062", - "drilldown" : "062" - }, - { - "name" : "#063", - "y" : 87, - "drilldown" : "063" - }, - { - "drilldown" : "064", - "name" : "#064", - "y" : 76 - }, - { - "y" : 71, - "name" : "#065", - "drilldown" : "065" - }, - { - "drilldown" : "066", - "y" : 81, - "name" : "#066" - }, - { - "name" : "#067", - "y" : 87, - "drilldown" : "067" - }, - { - "drilldown" : "068", - "y" : 68, - "name" : "#068" - }, - { - "y" : 78, - "name" : "#069", - "drilldown" : "069" - }, - { - "drilldown" : "070", - "name" : "#070", - "y" : 16 - } - ] - } - ], "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-07-20 10:25:23 GMT" - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-07-20 10:56:00 GMT" }, "drilldown" : { "series" : [ { + "name" : "001", "data" : [ [ "Perl", @@ -400,11 +32,9 @@ 11 ] ], - "name" : "001", "id" : "001" }, { - "name" : "002", "id" : "002", "data" : [ [ @@ -419,7 +49,8 @@ "Blog", 10 ] - ] + ], + "name" : "002" }, { "name" : "003", @@ -440,8 +71,8 @@ ] }, { - "id" : "004", "name" : "004", + "id" : "004", "data" : [ [ "Perl", @@ -458,7 +89,6 @@ ] }, { - "name" : "005", "id" : "005", "data" : [ [ @@ -473,7 +103,8 @@ "Blog", 12 ] - ] + ], + "name" : "005" }, { "data" : [ @@ -490,10 +121,11 @@ 7 ] ], - "name" : "006", - "id" : "006" + "id" : "006", + "name" : "006" }, { + "id" : "007", "data" : [ [ "Perl", @@ -508,10 +140,10 @@ 10 ] ], - "id" : "007", "name" : "007" }, { + "id" : "008", "data" : [ [ "Perl", @@ -526,8 +158,7 @@ 12 ] ], - "name" : "008", - "id" : "008" + "name" : "008" }, { "data" : [ @@ -544,12 +175,12 @@ 13 ] ], - "name" : "009", - "id" : "009" + "id" : "009", + "name" : "009" }, { - "id" : "010", "name" : "010", + "id" : "010", "data" : [ [ "Perl", @@ -566,8 +197,8 @@ ] }, { - "id" : "011", "name" : "011", + "id" : "011", "data" : [ [ "Perl", @@ -584,7 +215,6 @@ ] }, { - "id" : "012", "name" : "012", "data" : [ [ @@ -599,7 +229,8 @@ "Blog", 11 ] - ] + ], + "id" : "012" }, { "data" : [ @@ -638,7 +269,6 @@ "name" : "014" }, { - "id" : "015", "name" : "015", "data" : [ [ @@ -653,9 +283,12 @@ "Blog", 15 ] - ] + ], + "id" : "015" }, { + "name" : "016", + "id" : "016", "data" : [ [ "Perl", @@ -669,12 +302,9 @@ "Blog", 12 ] - ], - "id" : "016", - "name" : "016" + ] }, { - "name" : "017", "id" : "017", "data" : [ [ @@ -689,9 +319,11 @@ "Blog", 12 ] - ] + ], + "name" : "017" }, { + "name" : "018", "data" : [ [ "Perl", @@ -706,10 +338,10 @@ 14 ] ], - "id" : "018", - "name" : "018" + "id" : "018" }, { + "name" : "019", "data" : [ [ "Perl", @@ -724,8 +356,7 @@ 13 ] ], - "id" : "019", - "name" : "019" + "id" : "019" }, { "data" : [ @@ -746,8 +377,6 @@ "name" : "020" }, { - "name" : "021", - "id" : "021", "data" : [ [ "Perl", @@ -761,9 +390,13 @@ "Blog", 10 ] - ] + ], + "id" : "021", + "name" : "021" }, { + "name" : "022", + "id" : "022", "data" : [ [ "Perl", @@ -777,11 +410,10 @@ "Blog", 10 ] - ], - "name" : "022", - "id" : "022" + ] }, { + "id" : "023", "data" : [ [ "Perl", @@ -796,8 +428,7 @@ 12 ] ], - "name" : "023", - "id" : "023" + "name" : "023" }, { "data" : [ @@ -814,10 +445,11 @@ 11 ] ], - "name" : "024", - "id" : "024" + "id" : "024", + "name" : "024" }, { + "id" : "025", "data" : [ [ "Perl", @@ -832,10 +464,10 @@ 12 ] ], - "name" : "025", - "id" : "025" + "name" : "025" }, { + "id" : "026", "data" : [ [ "Perl", @@ -850,10 +482,10 @@ 10 ] ], - "id" : "026", "name" : "026" }, { + "name" : "027", "data" : [ [ "Perl", @@ -868,8 +500,7 @@ 9 ] ], |
