diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-09 09:04:03 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-09 09:04:03 +0100 |
| commit | de0ca0b00cad07ea6ec6a30d3b12207efd1e55e7 (patch) | |
| tree | a5254b6a4b0d08c6493b090a4b4ef34304cdec2e | |
| parent | d67e3e2c60369a2c33e42a215374f907a24cc19d (diff) | |
| download | perlweeklychallenge-club-de0ca0b00cad07ea6ec6a30d3b12207efd1e55e7.tar.gz perlweeklychallenge-club-de0ca0b00cad07ea6ec6a30d3b12207efd1e55e7.tar.bz2 perlweeklychallenge-club-de0ca0b00cad07ea6ec6a30d3b12207efd1e55e7.zip | |
- Added solutions by Colin Crain.
| -rw-r--r-- | challenge-059/colin-crain/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-059/colin-crain/perl/ch-1.pl | 88 | ||||
| -rw-r--r-- | challenge-059/colin-crain/perl/ch-2.pl | 35 | ||||
| -rw-r--r-- | challenge-059/colin-crain/raku/ch-1.p6 | 65 | ||||
| -rw-r--r-- | challenge-059/colin-crain/raku/ch-2.p6 | 11 | ||||
| -rw-r--r-- | stats/pwc-current.json | 183 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 70 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 840 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 380 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 112 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 38 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 360 |
16 files changed, 1321 insertions, 1094 deletions
diff --git a/challenge-059/colin-crain/blog.txt b/challenge-059/colin-crain/blog.txt new file mode 100644 index 0000000000..196a8bde29 --- /dev/null +++ b/challenge-059/colin-crain/blog.txt @@ -0,0 +1 @@ +https://colincrain.wordpress.com/2020/05/08/sorting-a-linked-list-and-summing-binary-bits/ diff --git a/challenge-059/colin-crain/perl/ch-1.pl b/challenge-059/colin-crain/perl/ch-1.pl new file mode 100644 index 0000000000..ee71fb31ae --- /dev/null +++ b/challenge-059/colin-crain/perl/ch-1.pl @@ -0,0 +1,88 @@ +use warnings; +use strict; +use feature ":5.26"; + +## ## ## ## ## MAIN: + +## acquire the locus value and the array representation +## of the linked list +my ($locus, @input) = @ARGV; +my $next = undef; +my $node; + +## 1. convert the input commandline array into a linked list +while (scalar @input > 0) { + my $value = pop @input; + $node = new Node($value, $next); + $next = $node +} +## $node currently points to beginning of the list + +my $prelist_first; +my $prelist_last; +my $postlist_first; +my $postlist_last; + +while (defined $node) { + ## 2a. if it is less than the given value, add it to + ## the end of the pre list + if ($node->value < $locus) { + defined $prelist_last ? $prelist_last->next($node) + : ($prelist_first = $node); + $prelist_last = $node; + } + ## 2b. if it is more than or equal to the given value + ## add it to the end of the post list + else { + defined $postlist_last ? $postlist_last->next($node) + : ($postlist_first = $node); + $postlist_last = $node; + } + + $node = $node->next; +} + +## 3. link the pre list to the post list: + +## 3a. point the last element of the pre list to +## the first element of the post +$prelist_last->next($postlist_first) if (defined $prelist_last); + +## 3b. point the last element of the post list to null +$postlist_last->{'next'} = undef; + +## ## ## output + +## if prelist never got made, start with the postlist +$node = $prelist_first || $postlist_first; +my @output; +while (defined $node) { + push @output, $node->value; + $node = $node->next; +} +say join ' → ', @output; + + +## ## ## ## ## NODE PACKAGE + +package Node; + +sub new { + my ($class, $value, $next) = @_; + my $self = { "value" => $value, + "next" => $next }; + bless $self, $class; + return $self; +} + +sub value { + my ($self, $value ) = @_; + $self->{value} = $value if defined $value; + return $self->{value} +} + +sub next { + my ($self, $next ) = @_; + $self->{next} = $next if defined $next; + return $self->{next} +} diff --git a/challenge-059/colin-crain/perl/ch-2.pl b/challenge-059/colin-crain/perl/ch-2.pl new file mode 100644 index 0000000000..7f9768a6f2 --- /dev/null +++ b/challenge-059/colin-crain/perl/ch-2.pl @@ -0,0 +1,35 @@ +use warnings; +use strict; +use feature ":5.26"; + +use List::Util qw(sum); + +## ## ## ## ## MAIN: + +my @array = @ARGV; +my @sets = choose_2_sets( @array ); + +my $sum; +for my $set ( @sets ) { + $sum += bit_difference($set->[0], $set->[1]); +} + +say $sum; + + +## ## ## ## ## SUBS: + +sub bit_difference { + return sum( split //, sprintf "%b", 0+$_[0] ^ 0+$_[1] ); +} + +sub choose_2_sets { + my @array = @_; + my @out; + for my $i (0..(scalar @array - 1)) { + for my $j ($i+1..(scalar @array - 1)) { + push @out, [ $array[$i], $array[$j] ]; + } + } + return @out; +} diff --git a/challenge-059/colin-crain/raku/ch-1.p6 b/challenge-059/colin-crain/raku/ch-1.p6 new file mode 100644 index 0000000000..b6c5975aee --- /dev/null +++ b/challenge-059/colin-crain/raku/ch-1.p6 @@ -0,0 +1,65 @@ +class Node { + has Int $.value is rw; + has Node $.next is rw; +} + +class LinkedList { + has Node $.first is rw; + has Node $.last is rw; + + method populate_from_array ( @array ) { + my $node; + my $next; + while @array.elems > 0 { + $node = Node.new(value => @array.pop.Int); + $node.next = $next if $next.defined; + $next = $node; + } + $.first = $node; + } + + method arrow_print () { + my @output; + my $node = $.first; + while (defined $node) { + push @output, $node.value; + $node = $node.next; + } + @output.join(' → ').say; + } +} + + +sub MAIN (Int:D $locus, *@input) { + + ## 1. convert the input commandline array into a linked list + my $list = LinkedList.new(); + $list.populate_from_array( @input ); + + my $before = LinkedList.new(); + my $after = LinkedList.new(); + my $node = $list.first; + + ## 2a. if it is less than the given value, add it to + ## the end of the before list + ## 2b. if it is more than or equal to the given value + ## add it to the end of the after list + ## if a sublist isn't started, start it with the node + while $node.defined { + my $sublist = $node.value < $locus ?? $before !! $after; + $sublist.last.defined ?? $sublist.last.next + !! $sublist.first = $node; + $sublist.last = $node; + $node = $node.next; + } + + ## 3. link the pre list to the post list: + ## 3a. point the last element of the pre list to + ## the first element of the post + ## 3b. point the last element of the post list to null + $before.last.next = $after.first if defined $before.last; + $after.last.next = Nil if defined $after.last; + + # output + $list.arrow_print(); +} diff --git a/challenge-059/colin-crain/raku/ch-2.p6 b/challenge-059/colin-crain/raku/ch-2.p6 new file mode 100644 index 0000000000..6a9add0bfe --- /dev/null +++ b/challenge-059/colin-crain/raku/ch-2.p6 @@ -0,0 +1,11 @@ +sub MAIN ( *@input ) { + + my @sets = @input.combinations: 2; + my $sum = [+] @sets.map({bit_difference($_)}); + + $sum.say; +} + +sub bit_difference ($array) { + return ([+^] |$array).base(2).comb.sum; +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 60bef10ec5..6db261e8ba 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,12 +1,6 @@ { - "chart" : { - "type" : "column" - }, - "xAxis" : { - "type" : "category" - }, - "title" : { - "text" : "Perl Weekly Challenge - 059" + "legend" : { + "enabled" : 0 }, "drilldown" : { "series" : [ @@ -25,8 +19,6 @@ ] }, { - "id" : "Cheok-Yin Fung", - "name" : "Cheok-Yin Fung", "data" : [ [ "Perl", @@ -36,7 +28,9 @@ "Blog", 1 ] - ] + ], + "name" : "Cheok-Yin Fung", + "id" : "Cheok-Yin Fung" }, { "data" : [ @@ -45,16 +39,32 @@ 2 ], [ - "Blog", + "Raku", 2 + ], + [ + "Blog", + 1 ] ], + "name" : "Colin Crain", + "id" : "Colin Crain" + }, + { + "id" : "Dave Jacoby", "name" : "Dave Jacoby", - "id" : "Dave Jacoby" + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 2 + ] + ] }, { - "id" : "E. Choroba", - "name" : "E. Choroba", "data" : [ [ "Perl", @@ -64,7 +74,9 @@ "Blog", 1 ] - ] + ], + "name" : "E. Choroba", + "id" : "E. Choroba" }, { "name" : "Javier Luque", @@ -95,18 +107,16 @@ "name" : "Jorg Sommrey" }, { - "name" : "Leo Manfredi", - "id" : "Leo Manfredi", "data" : [ [ "Perl", 1 ] - ] + ], + "id" : "Leo Manfredi", + "name" : "Leo Manfredi" }, { - "id" : "Luca Ferrari", - "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -116,7 +126,9 @@ "Blog", 2 ] - ] + ], + "id" : "Luca Ferrari", + "name" : "Luca Ferrari" }, { "data" : [ @@ -129,22 +141,22 @@ 1 ] ], - "id" : "Mark Anderson", - "name" : "Mark Anderson" + "name" : "Mark Anderson", + "id" : "Mark Anderson" }, { - "name" : "Markus Holzer", - "id" : "Markus Holzer", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Markus Holzer", + "name" : "Markus Holzer" }, { - "id" : "Mohammad S Anwar", "name" : "Mohammad S Anwar", + "id" : "Mohammad S Anwar", "data" : [ [ "Perl", @@ -157,8 +169,6 @@ ] }, { - "name" : "Roger Bell_West", - "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -168,41 +178,41 @@ "Raku", 2 ] - ] + ], + "id" : "Roger Bell_West", + "name" : "Roger Bell_West" }, { + "name" : "Saif Ahmed", + "id" : "Saif Ahmed", "data" : [ [ "Perl", 2 ] - ], - "id" : "Saif Ahmed", - "name" : "Saif Ahmed" + ] }, { + "name" : "Sangeet Kar", + "id" : "Sangeet Kar", "data" : [ [ "Perl", 2 ] - ], - "name" : "Sangeet Kar", - "id" : "Sangeet Kar" + ] }, { + "name" : "Simon Proctor", + "id" : "Simon Proctor", "data" : [ [ "Raku", 2 ] - ], - "name" : "Simon Proctor", - "id" : "Simon Proctor" + ] }, { - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -212,7 +222,9 @@ "Raku", 2 ] - ] + ], + "name" : "Ulrich Rieke", + "id" : "Ulrich Rieke" }, { "name" : "Wanderdoc", @@ -236,13 +248,18 @@ } ] }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, "series" : [ { "data" : [ { - "drilldown" : "Arne Sommer", + "y" : 3, "name" : "Arne Sommer", - "y" : 3 + "drilldown" : "Arne Sommer" }, { "y" : 3, @@ -250,6 +267,11 @@ "drilldown" : "Cheok-Yin Fung" }, { + "y" : 5, + "drilldown" : "Colin Crain", + "name" : "Colin Crain" + }, + { "y" : 4, "drilldown" : "Dave Jacoby", "name" : "Dave Jacoby" @@ -260,19 +282,19 @@ "drilldown" : "E. Choroba" }, { + "y" : 5, "name" : "Javier Luque", - "drilldown" : "Javier Luque", - "y" : 5 + "drilldown" : "Javier Luque" }, { "y" : 2, - "name" : "Jorg Sommrey", - "drilldown" : "Jorg Sommrey" + "drilldown" : "Jorg Sommrey", + "name" : "Jorg Sommrey" }, { - "y" : 1, "name" : "Leo Manfredi", - "drilldown" : "Leo Manfredi" + "drilldown" : "Leo Manfredi", + "y" : 1 }, { "name" : "Luca Ferrari", @@ -280,23 +302,23 @@ "y" : 4 }, { + "y" : 2, "drilldown" : "Mark Anderson", - "name" : "Mark Anderson", - "y" : 2 + "name" : "Mark Anderson" }, { - "drilldown" : "Markus Holzer", "name" : "Markus Holzer", + "drilldown" : "Markus Holzer", "y" : 2 }, { - "y" : 4, + "drilldown" : "Mohammad S Anwar", "name" : "Mohammad S Anwar", - "drilldown" : "Mohammad S Anwar" + "y" : 4 }, { - "name" : "Roger Bell_West", "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West", "y" : 4 }, { @@ -310,19 +332,19 @@ "name" : "Sangeet Kar" }, { + "y" : 2, "name" : "Simon Proctor", - "drilldown" : "Simon Proctor", - "y" : 2 + "drilldown" : "Simon Proctor" }, { - "y" : 3, + "name" : "Ulrich Rieke", "drilldown" : "Ulrich Rieke", - "name" : "Ulrich Rieke" + "y" : 3 }, { "y" : 2, - "name" : "Wanderdoc", - "drilldown" : "Wanderdoc" + "drilldown" : "Wanderdoc", + "name" : "Wanderdoc" }, { "y" : 1, @@ -334,29 +356,30 @@ "colorByPoint" : 1 } ], - "legend" : { - "enabled" : 0 + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "[Champions: 19] Last updated at 2020-05-09 08:03:05 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 }, "plotOptions" : { "series" : { + "borderWidth" : 0, "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + "format" : "{point.y}", + "enabled" : 1 + } } }, - "subtitle" : { - "text" : "[Champions: 18] Last updated at 2020-05-09 02:41:32 GMT" + "chart" : { + "type" : "column" }, - "tooltip" : { - "followPointer" : 1, - "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/>" + "title" : { + "text" : "Perl Weekly Challenge - 059" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 44b7cd0cea..402184d884 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { - "legend" : { - "enabled" : "false" - }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "subtitle" : { - "text" : "Last updated at 2020-05-09 02:41:32 GMT" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" }, "chart" : { "type" : "column" }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - } + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + "subtitle" : { + "text" : "Last updated at 2020-05-09 08:03:05 GMT" }, "series" : [ { "name" : "Contributions", "dataLabels" : { - "color" : "#FFFFFF", "enabled" : "true", - "rotation" : -90, - "align" : "right", - "y" : 10, "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" }, - "format" : "{point.y:.0f}" + "rotation" : -90, + "y" : 10, + "color" : "#FFFFFF", + "format" : "{point.y:.0f}", + "align" : "right" }, "data" : [ [ "Blog", - 668 + 669 ], [ "Perl", - 2482 + 2484 ], [ "Raku", - 1557 + 1559 ] ] } - ] + ], + "xAxis" : { + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + }, + "type" : "category" + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "legend" : { + "enabled" : "false" + } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 962c57bd6d..d8cce497f8 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,312 +1,15 @@ { - "series" : [ - { - "data" : [ - { - "y" : 140, - "name" : "#001", - "drilldown" : "001" - }, - { - "y" : 109, - "name" : "#002", - "drilldown" : "002" - }, - { - "drilldown" : "003", - "name" : "#003", - "y" : 71 - }, - { - "y" : 91, - "name" : "#004", - "drilldown" : "004" - }, - { - "y" : 71, - "drilldown" : "005", - "name" : "#005" - }, - { - "name" : "#006", - "drilldown" : "006", - "y" : 52 - }, - { - "name" : "#007", - "drilldown" : "007", - "y" : 58 - }, - { - "y" : 70, - "name" : "#008", - "drilldown" : "008" - }, - { - "y" : 68, - "drilldown" : "009", - "name" : "#009" - }, - { - "name" : "#010", - "drilldown" : "010", - "y" : 60 - }, - { - "y" : 79, - "drilldown" : "011", - "name" : "#011" - }, - { - "y" : 83, - "drilldown" : "012", - "name" : "#012" - }, - { - "y" : 76, - "name" : "#013", - "drilldown" : "013" - }, - { - "y" : 96, - "name" : "#014", - "drilldown" : "014" - }, - { - "drilldown" : "015", - "name" : "#015", - "y" : 93 - }, - { - "drilldown" : "016", - "name" : "#016", - "y" : 66 - }, - { - "name" : "#017", - "drilldown" : "017", - "y" : 79 - }, - { - "y" : 76, - "drilldown" : "018", - "name" : "#018" - }, - { - "name" : "#019", - "drilldown" : "019", - "y" : 97 - }, - { - "y" : 95, - "name" : "#020", - "drilldown" : "020" - }, - { - "name" : "#021", - "drilldown" : "021", - "y" : 67 - }, - { - "y" : 63, - "name" : "#022", - "drilldown" : "022" - }, - { - "drilldown" : "023", - "name" : "#023", - "y" : 91 - }, - { - "y" : 70, - "name" : "#024", - "drilldown" : "024" - }, - { - "name" : "#025", - "drilldown" : "025", - "y" : 55 - }, - { - "name" : "#026", - "drilldown" : "026", - "y" : 70 - }, - { - "name" : "#027", - "drilldown" : "027", - "y" : 58 - }, - { - "y" : 78, - "name" : "#028", - "drilldown" : "028" - }, - { - "name" : "#029", - "drilldown" : "029", - "y" : 77 - }, - { - "y" : 115, - "name" : "#030", - "drilldown" : "030" - }, - { - "y" : 87, - "name" : "#031", - "drilldown" : "031" - }, - { - "y" : 92, - "drilldown" : "032", - "name" : "#032" - }, - { - "drilldown" : "033", - "name" : "#033", - "y" : 108 - }, - { - "name" : "#034", - "drilldown" : "034", - "y" : 62 - }, - { - "y" : 62, - "name" : "#035", - "drilldown" : "035" - }, - { - "drilldown" : "036", - "name" : "#036", - "y" : 66 - }, - { - "name" : "#037", - "drilldown" : "037", - "y" : 63 - }, - { - "y" : 65, - "drilldown" : "038", - "name" : "#038" - }, - { - "y" : 60, - "drilldown" : "039", - "name" : "#039" - }, - { - "name" : "#040", - "drilldown" : "040", - "y" : 71 - }, - { - "y" : 74, - "drilldown" : "041", - "name" : "#041" - }, - { - "y" : 88, - "drilldown" : "042", - "name" : "#042" - }, - { - "name" : "#043", - "drilldown" : "043", - "y" : 66 - }, - { - "drilldown" : "044", - "name" : "#044", - "y" : 82 - }, - { - "y" : 94, - "drilldown" : "045", - "name" : "#045" - }, - { - "name" : "#046", - "drilldown" : "046", - "y" : 85 - }, - { - "drilldown" : "047", - "name" : "#047", - "y" : 82 - }, - { - "name" : "#048", - "drilldown" : "048", - "y" : 106 - }, - { - "drilldown" : "049", - "name" : "#049", - "y" : 85 - }, - { - "y" : 96, - "name" : "#050", - "drilldown" : "050" - }, - { - "name" : "#051", - "drilldown" : "051", - "y" : 87 - }, - { - "drilldown" : "052", - "name" : "#052", - "y" : 89 - }, - { - "y" : 99, - "drilldown" : "053", - "name" : "#053" - }, - { - "y" : 99, - "drilldown" : "054", - "name" : "#054" - }, - { - "drilldown" : "055", - "name" : "#055", - "y" : 86 - }, - { - "y" : 93, - "name" : "#056", - "drilldown" : "056" - }, - { - "y" : 77, - "drilldown" : "057", - "name" : "#057" - }, - { - "y" : 60, - "name" : "#058", - "drilldown" : "058" - }, - { - "drilldown" : "059", - "name" : "#059", - "y" : 49 - } - ], - "colorByPoint" : "true", - "name" : "Perl Weekly Challenge Languages" + "yAxis" : { + "title" : { + "text" : "Total Solutions" } - ], + }, + "legend" : { + "enabled" : "false" + }, "drilldown" : { "series" : [ { - "id" : "001", - "name" : "001", "data" : [ [ "Perl", @@ -320,7 +23,9 @@ "Blog", 11 ] - ] + ], + "name" : "001", + "id" : "001" }, { "data" : [ @@ -359,8 +64,8 @@ "name" : "003" }, { - "name" : "004", "id" : "004", + "name" : "004", "data" : [ [ "Perl", @@ -377,8 +82,8 @@ ] }, { - "id" : "005", "name" : "005", + "id" : "005", "data" : [ [ "Perl", @@ -413,8 +118,6 @@ |
