diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-07 22:16:28 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-07 22:16:28 +0100 |
| commit | 980d4786745978e38e9912dc0ceabc9c1778622e (patch) | |
| tree | 892f0d84769328bd92414660655da6b9eabb14bd | |
| parent | a61aaee19adcdcdc364a62e09270c778584468e6 (diff) | |
| download | perlweeklychallenge-club-980d4786745978e38e9912dc0ceabc9c1778622e.tar.gz perlweeklychallenge-club-980d4786745978e38e9912dc0ceabc9c1778622e.tar.bz2 perlweeklychallenge-club-980d4786745978e38e9912dc0ceabc9c1778622e.zip | |
- Added Perl solutions to "Reorder List" task.
| -rw-r--r-- | challenge-068/mohammad-anwar/perl/ch-2.pl | 74 | ||||
| -rw-r--r-- | challenge-068/mohammad-anwar/perl/ch-2a.pl | 85 | ||||
| -rw-r--r-- | stats/pwc-current.json | 164 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 56 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 522 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 358 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 26 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 80 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 390 |
13 files changed, 1039 insertions, 880 deletions
diff --git a/challenge-068/mohammad-anwar/perl/ch-2.pl b/challenge-068/mohammad-anwar/perl/ch-2.pl new file mode 100644 index 0000000000..9aaa8790a0 --- /dev/null +++ b/challenge-068/mohammad-anwar/perl/ch-2.pl @@ -0,0 +1,74 @@ +#!/usr/bin/perl + +# +# Perl Weekly Challenge - 068 +# +# Task #2: Reorder List +# +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-068/ +# + +package Node; + +use Moo; + +has v => (is => 'rw'); +has c => (is => 'rw'); + +package main; + +my $list = $ARGV[0]//'1 -> 2 -> 3 -> 4 -> 5'; +print linked_list(reorder_list($list)), "\n"; + +# +# +# METHODS + +sub reorder_list { + my ($list) = @_; + + $list =~ s/\s+//g; + $list = [ split /\-\>/, $list ]; + my $head = Node->new(v => shift @$list); + my $link = [ $head ]; + + # prepare singly linked list + foreach my $v (@$list) { + my $node = Node->new(v => $v); + $link->[-1]->c($node); + push @$link, $node; + } + + # reorder linked list + my $i = 1; + foreach (0 .. int($#$list/2)) { + my $node = pop @$link; + splice(@$link, $i, 0, $node); + + # remove child from the last node + $link->[-1]->c(undef); + + # link new node to previous node + $link->[$i-1]->c($node); + + # make the next node as child of new node + $node->c($link->[$i+1]); + + $i += 2; + } + + return $head; +} + +sub linked_list { + my ($head) = @_; + + my @v = (); + while ($head->c) { + push @v, $head->v; + $head = $head->c; + } + push @v, $head->v; + + return sprintf("%s", join ' -> ', @v); +} diff --git a/challenge-068/mohammad-anwar/perl/ch-2a.pl b/challenge-068/mohammad-anwar/perl/ch-2a.pl new file mode 100644 index 0000000000..4fea00d762 --- /dev/null +++ b/challenge-068/mohammad-anwar/perl/ch-2a.pl @@ -0,0 +1,85 @@ +#!/usr/bin/perl + +# +# Perl Weekly Challenge - 068 +# +# Task #2: Reorder List +# +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-068/ +# + +package Node; + +use Moo; + +has v => (is => 'rw'); +has c => (is => 'rw'); + +package main; + +use Test::More; + +is( linked_list(reorder_list('1 -> 2 -> 3 -> 4')), + '1 -> 4 -> 2 -> 3', + 'testing 1 -> 2 -> 3 -> 4' ); +is( linked_list(reorder_list('1 -> 2 -> 3 -> 4 -> 5')), + '1 -> 5 -> 2 -> 4 -> 3', + 'testing 1 -> 2 -> 3 -> 4 -> 5' ); +is( linked_list(reorder_list('1 -> 2 -> 3 -> 4 -> 5 -> 6')), + '1 -> 6 -> 2 -> 5 -> 3 -> 4', + 'testing 1 -> 2 -> 3 -> 4 -> 5 -> 6' ); + +done_testing; + +# +# +# METHODS + +sub reorder_list { + my ($list) = @_; + + $list =~ s/\s+//g; + $list = [ split /\-\>/, $list ]; + my $head = Node->new(v => shift @$list); + my $link = [ $head ]; + + # prepare singly linked list + foreach my $v (@$list) { + my $node = Node->new(v => $v); + $link->[-1]->c($node); + push @$link, $node; + } + + # reorder linked list + my $i = 1; + foreach (0 .. int($#$list/2)) { + my $node = pop @$link; + splice(@$link, $i, 0, $node); + + # remove child from the last node + $link->[-1]->c(undef); + + # link new node to previous node + $link->[$i-1]->c($node); + + # make the next node as child of new node + $node->c($link->[$i+1]); + + $i += 2; + } + + return $head; +} + +sub linked_list { + my ($head) = @_; + + my @v = (); + while ($head->c) { + push @v, $head->v; + $head = $head->c; + } + push @v, $head->v; + + return sprintf("%s", join ' -> ', @v); +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 411e6f9968..6a4d0651ed 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,12 +1,65 @@ { + "series" : [ + { + "name" : "Perl Weekly Challenge - 068", + "colorByPoint" : 1, + "data" : [ + { + "drilldown" : "Andrew Shitov", + "name" : "Andrew Shitov", + "y" : 2 + }, + { + "name" : "E. Choroba", + "y" : 2, + "drilldown" : "E. Choroba" + }, + { + "name" : "Javier Luque", + "y" : 5, + "drilldown" : "Javier Luque" + }, + { + "y" : 4, + "name" : "Luca Ferrari", + "drilldown" : "Luca Ferrari" + }, + { + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson", + "y" : 1 + }, + { + "drilldown" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar", + "y" : 2 + }, + { + "drilldown" : "Roger Bell_West", + "y" : 2, + "name" : "Roger Bell_West" + }, + { + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor", + "y" : 2 + }, + { + "name" : "Walt Mankowski", + "y" : 2, + "drilldown" : "Walt Mankowski" + } + ] + } + ], "chart" : { "type" : "column" }, "plotOptions" : { "series" : { "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" + "format" : "{point.y}", + "enabled" : 1 }, "borderWidth" : 0 } @@ -16,20 +69,13 @@ }, "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 - }, - "xAxis" : { - "type" : "category" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "followPointer" : 1, + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" }, "drilldown" : { "series" : [ { + "name" : "Andrew Shitov", "id" : "Andrew Shitov", "data" : [ [ @@ -40,8 +86,7 @@ "Blog", 1 ] - ], - "name" : "Andrew Shitov" + ] }, { "name" : "E. Choroba", @@ -54,6 +99,7 @@ "id" : "E. Choroba" }, { + "name" : "Javier Luque", "data" : [ [ "Perl", @@ -68,10 +114,11 @@ 1 ] ], - "name" : "Javier Luque", "id" : "Javier Luque" }, { + "name" : "Luca Ferrari", + "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -81,9 +128,7 @@ "Blog", 2 ] - ], - "name" : "Luca Ferrari", - "id" : "Luca Ferrari" + ] }, { "data" : [ @@ -92,108 +137,63 @@ 1 ] ], - "name" : "Mark Anderson", - "id" : "Mark Anderson" + "id" : "Mark Anderson", + "name" : "Mark Anderson" }, { "name" : "Mohammad S Anwar", + "id" : "Mohammad S Anwar", "data" : [ [ "Perl", - 1 + 2 ] - ], - "id" : "Mohammad S Anwar" + ] }, { + "id" : "Roger Bell_West", "data" : [ [ "Perl", 2 ] ], - "name" : "Roger Bell_West", - "id" : "Roger Bell_West" + "name" : "Roger Bell_West" }, { - "id" : "Simon Proctor", + "name" : "Simon Proctor", "data" : [ [ "Raku", 2 ] ], - "name" : "Simon Proctor" + "id" : "Simon Proctor" }, { - "id" : "Walt Mankowski", + "name" : "Walt Mankowski", "data" : [ [ "Perl", 2 ] ], - "name" : "Walt Mankowski" + "id" : "Walt Mankowski" } ] }, "title" : { "text" : "Perl Weekly Challenge - 068" }, - "series" : [ - { - "data" : [ - { - "y" : 2, - "name" : "Andrew Shitov", - "drilldown" : "Andrew Shitov" - }, - { - "y" : 2, - "name" : "E. Choroba", - "drilldown" : "E. Choroba" - }, - { - "name" : "Javier Luque", - "drilldown" : "Javier Luque", - "y" : 5 - }, - { - "y" : 4, - "drilldown" : "Luca Ferrari", - "name" : "Luca Ferrari" - }, - { - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson", - "y" : 1 - }, - { - "name" : "Mohammad S Anwar", - "drilldown" : "Mohammad S Anwar", - "y" : 1 - }, - { - "drilldown" : "Roger Bell_West", - "name" : "Roger Bell_West", - "y" : 2 - }, - { - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor", - "y" : 2 - }, - { - "name" : "Walt Mankowski", - "drilldown" : "Walt Mankowski", - "y" : 2 - } - ], - "name" : "Perl Weekly Challenge - 068", - "colorByPoint" : 1 + "yAxis" : { + "title" : { + "text" : "Total Solutions" } - ], + }, "subtitle" : { - "text" : "[Champions: 9] Last updated at 2020-07-07 12:41:52 GMT" + "text" : "[Champions: 9] Last updated at 2020-07-07 21:16:09 GMT" + }, + "xAxis" : { + "type" : "category" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 458caa2c8b..27abb8726d 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,22 +1,4 @@ { - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - } - }, - "chart" : { - "type" : "column" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "legend" : { - "enabled" : "false" - }, "series" : [ { "data" : [ @@ -26,30 +8,36 @@ ], [ "Perl", - 2798 + 2799 ], [ "Raku", 1791 ] ], - "name" : "Contributions", "dataLabels" : { + "align" : "right", "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" }, - "y" : 10, - "enabled" : "true", "format" : "{point.y:.0f}", + "enabled" : "true", "color" : "#FFFFFF", - "align" : "right", + "y" : 10, "rotation" : -90 - } + }, + "name" : "Contributions" } ], - "subtitle" : { - "text" : "Last updated at 2020-07-07 12:41:52 GMT" + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : "false" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, "title" : { "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" @@ -59,5 +47,17 @@ "title" : { "text" : null } + }, + "subtitle" : { + "text" : "Last updated at 2020-07-07 21:16:09 GMT" + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 561b757893..758b298491 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,85 +1,75 @@ { - "xAxis" : { - "type" : "category" - }, - "tooltip" : { - "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" + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, - "legend" : { - "enabled" : "false" + "title" : { + "text" : "Perl Weekly Challenge Language" }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } + "xAxis" : { + "type" : "category" }, - "chart" : { - "type" : "column" + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-07-07 21:16:09 GMT" }, "series" : [ { - "colorByPoint" : "true", "data" : [ { - "name" : "#001", "drilldown" : "001", + "name" : "#001", "y" : 142 }, { "drilldown" : "002", - "name" : "#002", - "y" : 109 + "y" : 109, + "name" : "#002" }, { + "drilldown" : "003", "y" : 71, - "name" : "#003", - "drilldown" : "003" + "name" : "#003" }, { + "name" : "#004", "y" : 91, - "drilldown" : "004", - "name" : "#004" + "drilldown" : "004" }, { + "y" : 72, "name" : "#005", - "drilldown" : "005", - "y" : 72 + "drilldown" : "005" }, { - "name" : "#006", "drilldown" : "006", + "name" : "#006", "y" : 52 }, { - "drilldown" : "007", + "y" : 59, "name" : "#007", - "y" : 59 + "drilldown" : "007" }, { "y" : 72, - "drilldown" : "008", - "name" : "#008" + "name" : "#008", + "drilldown" : "008" }, { "drilldown" : "009", - "name" : "#009", - "y" : 68 + "y" : 68, + "name" : "#009" }, { + "drilldown" : "010", "y" : 60, - "name" : "#010", - "drilldown" : "010" + "name" : "#010" }, { - "name" : "#011", "drilldown" : "011", - "y" : 79 + "y" : 79, + "name" : "#011" }, { "y" : 83, @@ -87,49 +77,49 @@ "drilldown" : "012" }, { - "y" : 76, "drilldown" : "013", - "name" : "#013" + "name" : "#013", + "y" : 76 }, { - "drilldown" : "014", "name" : "#014", - "y" : 96 + "y" : 96, + "drilldown" : "014" }, { + "name" : "#015", "y" : 93, - "drilldown" : "015", - "name" : "#015" + "drilldown" : "015" }, { "drilldown" : "016", - "name" : "#016", - "y" : 66 + "y" : 66, + "name" : "#016" }, { - "drilldown" : "017", + "y" : 79, "name" : "#017", - "y" : 79 + "drilldown" : "017" }, { - "drilldown" : "018", + "y" : 76, "name" : "#018", - "y" : 76 + "drilldown" : "018" }, { "drilldown" : "019", - "name" : "#019", - "y" : 97 + "y" : 97, + "name" : "#019" }, { "name" : "#020", - "drilldown" : "020", - "y" : 95 + "y" : 95, + "drilldown" : "020" }, { - "y" : 67, "drilldown" : "021", - "name" : "#021" + "name" : "#021", + "y" : 67 }, { "drilldown" : "022", @@ -138,12 +128,12 @@ }, { "drilldown" : "023", - "name" : "#023", - "y" : 91 + "y" : 91, + "name" : "#023" }, { - "y" : 70, "name" : "#024", + "y" : 70, "drilldown" : "024" }, { @@ -152,68 +142,68 @@ "drilldown" : "025" }, { + "drilldown" : "026", "y" : 70, - "name" : "#026", - "drilldown" : "026" + "name" : "#026" }, { - "y" : 58, "drilldown" : "027", + "y" : 58, "name" : "#027" }, { - "y" : 78, + "drilldown" : "028", "name" : "#028", - "drilldown" : "028" + "y" : 78 }, { - "drilldown" : "029", + "y" : 77, "name" : "#029", - "y" : 77 + "drilldown" : "029" }, { - "drilldown" : "030", + "y" : 115, "name" : "#030", - "y" : 115 + "drilldown" : "030" }, { + "name" : "#031", "y" : 87, - "drilldown" : "031", - "name" : "#031" + "drilldown" : "031" }, { + "drilldown" : "032", "y" : 92, - "name" : "#032", - "drilldown" : "032" + "name" : "#032" }, { "name" : "#033", - "drilldown" : "033", - "y" : 108 + "y" : 108, + "drilldown" : "033" }, { "drilldown" : "034", - "name" : "#034", - "y" : 62 + "y" : 62, + "name" : "#034" }, { - "y" : 62, + "drilldown" : "035", "name" : "#035", - "drilldown" : "035" + "y" : 62 }, { - "drilldown" : "036", "name" : "#036", - "y" : 66 + "y" : 66, + "drilldown" : "036" }, { - "name" : "#037", "drilldown" : "037", + "name" : "#037", "y" : 65 }, { - "y" : 65, "name" : "#038", + "y" : 65, "drilldown" : "038" }, { @@ -223,93 +213,93 @@ }, { "drilldown" : "040", - "name" : "#040", - "y" : 71 + "y" : 71, + "name" : "#040" }, { - "drilldown" : "041", "name" : "#041", - "y" : 74 + "y" : 74, + "drilldown" : "041" }, { - "y" : 88, "name" : "#042", + "y" : 88, "drilldown" : "042" }, { - "y" : 66, "name" : "#043", + "y" : 66, "drilldown" : "043" }, { "name" : "#044", - "drilldown" : "044", - "y" : 82 + "y" : 82, + "drilldown" : "044" }, { - "drilldown" : "045", "name" : "#045", - "y" : 94 + "y" : 94, + "drilldown" : "045" }, { "drilldown" : "046", - "name" : "#046", - "y" : 85 + "y" : 85, + "name" : "#046" }, { "drilldown" : "047", - "name" : "#047", - "y" : 82 + "y" : 82, + "name" : "#047" }, { "y" : 106, - "drilldown" : "048", - "name" : "#048" + "name" : "#048", + "drilldown" : "048" }, { - "y" : 85, "drilldown" : "049", - "name" : "#049" + "name" : "#049", + "y" : 85 }, { - "drilldown" : "050", "name" : "#050", - "y" : 96 + "y" : 96, + "drilldown" : "050" }, { - "drilldown" : "051", + "y" : 87, "name" : "#051", - "y" : 87 + "drilldown" : "051" }, { - "y" : 89, + "drilldown" : "052", "name" : "#052", - "drilldown" : "052" + "y" : 89 }, { "drilldown" : "053", - "name" : "#053", - "y" : 99 + "y" : 99, + "name" : "#053" }, { + "name" : "#054", "y" : 99, - "drilldown" : "054", - "name" : "#054" + "drilldown" : "054" }, { - "drilldown" : "055", "name" : "#055", - "y" : 86 + "y" : 86, + "drilldown" : "055" }, { - "name" : "#056", "drilldown" : "056", + "name" : "#056", "y" : 93 }, { - "name" : "#057", "drilldown" : "057", - "y" : 78 + "y" : 78, + "name" : "#057" }, { "y" : 62, @@ -318,23 +308,23 @@ }, { "y" : 82, - "drilldown" : "059", - "name" : "#059" + "name" : "#059", + "drilldown" : "059" }, { + "y" : 78, "name" : "#060", - "drilldown" : "060", - "y" : 78 + "drilldown" : "060" }, { - "y" : 79, "drilldown" : "061", - "name" : "#061" + "name" : "#061", + "y" : 79 }, { - "drilldown" : "062", + "y" : 54, "name" : "#062", - "y" : 54 + "drilldown" : "062" }, { "drilldown" : "063", @@ -342,45 +332,58 @@ "y" : 87 }, { + "drilldown" : "064", "y" : 76, - "name" : "#064", - "drilldown" : "064" + "name" : "#064" }, { + "drilldown" : "065", "y" : 71, - "name" : "#065", - "drilldown" : "065" + "name" : "#065" }, { "drilldown" : "066", - "name" : "#066", - "y" : 81 + "y" : 81, + "name" : "#066" }, { + "drilldown" : "067", "y" : 86, - "name" : "#067", - "drilldown" : "067" + "name" : "#067" }, { - "y" : 21, "drilldown" : "068", - "name" : "#068" + "name" : "#068", + "y" : 22 } ], + "colorByPoint" : "true", "name" : "Perl Weekly Challenge Languages" } ], - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-07-07 12:41:52 GMT" + "chart" : { + "type" : "column" }, - "title" : { - "text" : "Perl Weekly Challenge Language" + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, + "tooltip" : { + "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" + }, + "legend" : { + "enabled" : "false" }, "drilldown" : { "series" : [ { - "id" : "001", - "name" : "001", "data" : [ [ "Perl", @@ -394,7 +397,9 @@ "Blog", 11 ] - ] + ], + "id" : "001", + "name" : "001" }, { "data" : [ @@ -411,8 +416,8 @@ 10 ] ], - "name" : "002", - "id" : "002" + "id" : "002", + "name" : "002" }, { "data" : [ @@ -429,8 +434,8 @@ 9 ] ], - "name" : "003", - "id" : "003" + "id" : "003", + "name" : "003" }, { "name" : "004", @@ -451,8 +456,6 @@ "id" : "004" }, { - "id" : "005", - "name" : "005", "data" : [ [ "Perl", @@ -466,7 +469,9 @@ "Blog", 12 ] |
