diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-04 09:19:12 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-04 09:19:12 +0100 |
| commit | 856f56ef0cfd271b4c82090f140f65ce163ea709 (patch) | |
| tree | 280fc1f6579071a15739cbb15541d4999992106d | |
| parent | 67cdd35efcf8c026c738ede53dcf8662282fbe29 (diff) | |
| download | perlweeklychallenge-club-856f56ef0cfd271b4c82090f140f65ce163ea709.tar.gz perlweeklychallenge-club-856f56ef0cfd271b4c82090f140f65ce163ea709.tar.bz2 perlweeklychallenge-club-856f56ef0cfd271b4c82090f140f65ce163ea709.zip | |
- Added solutions by Javier Luque.
| -rw-r--r-- | challenge-059/javier-luque/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-059/javier-luque/perl/ch-1.pl | 141 | ||||
| -rw-r--r-- | challenge-059/javier-luque/perl/ch-2.pl | 32 | ||||
| -rw-r--r-- | challenge-059/javier-luque/raku/ch-1.p6 | 104 | ||||
| -rw-r--r-- | challenge-059/javier-luque/raku/ch-2.p6 | 26 | ||||
| -rw-r--r-- | stats/pwc-challenge-058.json | 434 | ||||
| -rw-r--r-- | stats/pwc-current.json | 427 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 66 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 487 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 758 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 122 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 122 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 70 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 110 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 380 |
17 files changed, 1916 insertions, 1518 deletions
diff --git a/challenge-059/javier-luque/blog.txt b/challenge-059/javier-luque/blog.txt new file mode 100644 index 0000000000..4daabaedc2 --- /dev/null +++ b/challenge-059/javier-luque/blog.txt @@ -0,0 +1 @@ +https://perlchallenges.wordpress.com/2020/05/04/perl-weekly-challenge-059/ diff --git a/challenge-059/javier-luque/perl/ch-1.pl b/challenge-059/javier-luque/perl/ch-1.pl new file mode 100644 index 0000000000..0672fdac2a --- /dev/null +++ b/challenge-059/javier-luque/perl/ch-1.pl @@ -0,0 +1,141 @@ +#!/usr/bin/perl +# Test: ./ch-1.pl +package LinkedList::Node; # Linked list +use Mouse; + +has 'value' => ( + is => 'rw', + isa => 'Maybe[Int]', + default => sub { + return undef; + } +); + +has 'next' => ( + is => 'rw', + isa => 'Maybe[LinkedList::Node]', + default => sub { + return undef + } +); + +__PACKAGE__->meta->make_immutable(); + +package LinkedList; + +use Mouse; +use feature qw /say/; +use LinkedList::Node; + +has 'first' => ( + is => 'rw', + isa => 'Maybe[LinkedList::Node]', + default => sub { + return undef + } +); + +# Create the list +sub create_list { + my ($self, @values) = @_; + my $prev_node; + + # Populate the list + for my $value (@values) { + my $node = LinkedList::Node->new(value => $value); + + # Populate first and next nodes + ($prev_node) ? + $prev_node->next($node) : + $self->first($node); + + # Next + $prev_node = $node; + } +} + +sub partition_list { + my ($self, $k) = @_; + + # Temp variables to store node locations + my $k_node_current; + my $k_node_first; + my $before_node_current; + my $before_node_first; + my $after_node_current; + my $after_node_first; + + # Loop through the nodes + my $node = $self->first; + while ($node) { + if ($node->value == $k) { + if ($k_node_current) { + $k_node_current->next($node); + $k_node_current = $node; + } else { + $k_node_first = $node; + $k_node_current = $node; + } + } + + # Process the nodex lower than k + if ($node->value < $k) { + if ($before_node_current) { + $before_node_current->next($node); + $before_node_current = $node; + } else { + $before_node_first = $node; + $before_node_current = $node; + } + } + + # Process the nodex higher than k + if ($node->value > $k) { + if ($after_node_current) { + $after_node_current->next($node); + $after_node_current = $node; + } else { + $after_node_first = $node; + $after_node_current = $node; + } + } + + $node = $node->next; + } + + # link the chains + $self->first($before_node_first); + $before_node_current->next($k_node_first); + $k_node_current->next($after_node_first); + $after_node_current->next(undef); +} + +sub display_list { + my $self = shift; + + my $node = $self->first; + my @keys; + + while ($node) { + push @keys, $node->value; + $node = $node->next; + } + + return join ' → ', @keys; +} + +__PACKAGE__->meta->make_immutable(); + +package main; + +use strict; +use warnings; +use LinkedList; + +my $ll = LinkedList->new(); +$ll->create_list(1,4,3,2,5,2); +say 'Before: ' . $ll->display_list; +$ll->partition_list(3); +say 'After: ' . $ll->display_list; + + diff --git a/challenge-059/javier-luque/perl/ch-2.pl b/challenge-059/javier-luque/perl/ch-2.pl new file mode 100644 index 0000000000..c7ea428308 --- /dev/null +++ b/challenge-059/javier-luque/perl/ch-2.pl @@ -0,0 +1,32 @@ +#!/usr/bin/perl +# Test: ./ch-2.pl 2 3 4 + +use strict; +use warnings; +use feature qw /say/; +use Algorithm::Combinatorics qw /combinations/; + +my $answer = 0; + +my $combinations = combinations(\@ARGV, 2); +while (my $v = $combinations->next) { + $answer += f(@$v); +} + +say $answer; + +sub f { + return calculate_true_bits(int(shift) ^ int(shift)); +} + +# Calculate the number of true bits +sub calculate_true_bits { + my $number = shift; + my $count = 0; + + do { + $count++ if ($number & 1); + } while ($number = $number >> 1); + + return $count; +} diff --git a/challenge-059/javier-luque/raku/ch-1.p6 b/challenge-059/javier-luque/raku/ch-1.p6 new file mode 100644 index 0000000000..ca4849b3a3 --- /dev/null +++ b/challenge-059/javier-luque/raku/ch-1.p6 @@ -0,0 +1,104 @@ +# Test: perl6 ch-1.p6 +class LinkedList::Node { + has Int $.value is rw; + has LinkedList::Node $.next is rw; +} + +class LinkedList { + has LinkedList::Node $.first is rw; + + # Create the list + method create-list(*@values) { + my $prev_node; + + # Populate the list + for @values -> $value { + my $node = LinkedList::Node.new(value => $value); + + # Populate first and next nodes + if ($prev_node) { + $prev_node.next = $node + } else { + self.first = $node; + } + + # Next node + $prev_node = $node; + } + } + + method partition_list(Int $k) { + # Temp variables to store node locations + my $k_node_current; + my $k_node_first; + my $before_node_current; + my $before_node_first; + my $after_node_current; + my $after_node_first; + + # Loop through the nodes + my $node = self.first; + while ($node) { + if ($node.value == $k) { + if ($k_node_current) { + $k_node_current.next = $node; + $k_node_current = $node; + } else { + $k_node_first = $node; + $k_node_current = $node; + } + } + + # Process the nodex lower than k + if ($node.value < $k) { + if ($before_node_current) { + $before_node_current.next = $node; + $before_node_current = $node; + } else { + $before_node_first = $node; + $before_node_current = $node; + } + } + + # Process the nodex higher than k + if ($node.value > $k) { + if ($after_node_current) { + $after_node_current.next = $node; + $after_node_current = $node; + } else { + $after_node_first = $node; + $after_node_current = $node; + } + } + + $node = $node.next; + } + + # link the chains + self.first = $before_node_first; + $before_node_current.next = $k_node_first; + $k_node_current.next = $after_node_first; + $after_node_current.next = Nil; + } + + method display-list { + my $node = self.first; + my @keys; + + while ($node) { + @keys.push($node.value); + $node = $node.next; + } + + return @keys.join(" → "); + } +} + + +sub MAIN() { + my $ll = LinkedList.new(); + $ll.create-list(1,4,3,2,5,2); + say 'Before: ' ~ $ll.display-list; + $ll.partition_list(3); + say 'After: ' ~ $ll.display-list; +} diff --git a/challenge-059/javier-luque/raku/ch-2.p6 b/challenge-059/javier-luque/raku/ch-2.p6 new file mode 100644 index 0000000000..707105dd9a --- /dev/null +++ b/challenge-059/javier-luque/raku/ch-2.p6 @@ -0,0 +1,26 @@ +# Test: perl6 ch-2.p6 2 3 4 +sub MAIN(*@ARGV) { + my @combos = @ARGV.combinations: 2; + my $answer = 0; + + for @combos -> $combo { + $answer += f($combo[0], $combo[1]); + } + + say $answer; +} + +sub f(Int $a, Int $b) { + return calculate-true-bits($a +^ $b); +} + +# Calculate the number of true bits +sub calculate-true-bits(Int $n is copy) { + my $count = 0; + + repeat { + $count++ if ($n +& 1); + } while ($n = $n +> 1); + + return $count; +} diff --git a/stats/pwc-challenge-058.json b/stats/pwc-challenge-058.json new file mode 100644 index 0000000000..d273d7872e --- /dev/null +++ b/stats/pwc-challenge-058.json @@ -0,0 +1,434 @@ +{ + "series" : [ + { + "data" : [ + { + "y" : 4, + "drilldown" : "Arne Sommer", + "name" : "Arne Sommer" + }, + { + "y" : 1, + "name" : "Cheok-Yin Fung", + "drilldown" : "Cheok-Yin Fung" + }, + { + "drilldown" : "Colin Crain", + "name" : "Colin Crain", + "y" : 4 + }, + { + "name" : "Duncan C. White", + "drilldown" : "Duncan C. White", + "y" : 2 + }, + { + "drilldown" : "E. Choroba", + "name" : "E. Choroba", + "y" : 3 + }, + { + "name" : "Jared Martin", + "drilldown" : "Jared Martin", + "y" : 3 + }, + { + "y" : 5, + "drilldown" : "Javier Luque", + "name" : "Javier Luque" + }, + { + "name" : "Jorg Sommrey", + "drilldown" : "Jorg Sommrey", + "y" : 1 + }, + { + "drilldown" : "Kevin Colyer", + "name" : "Kevin Colyer", + "y" : 1 + }, + { + "y" : 5, + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" + }, + { + "y" : 1, + "drilldown" : "Leo Manfredi", + "name" : "Leo Manfredi" + }, + { + "drilldown" : "Lubos Kolouch", + "name" : "Lubos Kolouch", + "y" : 1 + }, + { + "name" : "Luca Ferrari", + "drilldown" : "Luca Ferrari", + "y" : 4 + }, + { + "name" : "Mark Anderson", + "drilldown" : "Mark Anderson", + "y" : 4 + }, + { + "drilldown" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar", + "y" : 5 + }, + { + "name" : "Roger Bell_West", + "drilldown" : "Roger Bell_West", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Saif Ahmed", + "name" : "Saif Ahmed" + }, + { + "y" : 3, + "name" : "Shahed Nooshmand", + "drilldown" : "Shahed Nooshmand" + }, + { + "y" : 2, + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor" + }, + { + "y" : 2, + "name" : "Ulrich Rieke", + "drilldown" : "Ulrich Rieke" + }, + { + "y" : 2, + "name" : "Wanderdoc", + "drilldown" : "Wanderdoc" + }, + { + "y" : 2, + "name" : "Yet Ebreo", + "drilldown" : "Yet Ebreo" + } + ], + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 058" + } + ], + "title" : { + "text" : "Perl Weekly Challenge - 058" + }, + "chart" : { + "type" : "column" + }, + "xAxis" : { + "type" : "category" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } + }, + "subtitle" : { + "text" : "[Champions: 22] Last updated at 2020-05-03 23:36:09 GMT" + }, + "legend" : { + "enabled" : 0 + }, + "drilldown" : { + "series" : [ + { + "data" : [ + [ + "Perl", + 1 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Arne Sommer", + "name" : "Arne Sommer" + }, + { + "data" : [ + [ + "Perl", + 1 + ] + ], + "id" : "Cheok-Yin Fung", + "name" : "Cheok-Yin Fung" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "name" : "Colin Crain", + "id" : "Colin Crain" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Duncan C. White", + "id" : "Duncan C. White" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "E. Choroba", + "name" : "E. Choroba" + }, + { + "name" : "Jared Martin", + "id" : "Jared Martin", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ] + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "name" : "Javier Luque", + "id" : "Javier Luque" + }, + { + "id" : "Jorg Sommrey", + "name" : "Jorg Sommrey", + "data" : [ + [ + "Perl", + 1 + ] + ] + }, + { + "data" : [ + [ + "Raku", + 1 + ] + ], + "id" : "Kevin Colyer", + "name" : "Kevin Colyer" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" + }, + { + "id" : "Leo Manfredi", + "name" : "Leo Manfredi", + "data" : [ + [ + "Perl", + 1 + ] + ] + }, + { + "data" : [ + [ + "Perl", + 1 + ] + ], + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" + }, + { + "data" : [ + [ + "Raku", + 2 + ], + [ + "Blog", + 2 + ] + ], + "id" : "Luca Ferrari", + "name" : "Luca Ferrari" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "name" : "Mark Anderson", + "id" : "Mark Anderson" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar" + }, + { + "name" : "Roger Bell_West", + "id" : "Roger Bell_West", + "data" : [ + [ + "Perl", + 2 + ] + ] + }, + { + "id" : "Saif Ahmed", + "name" : "Saif Ahmed", + "data" : [ + [ + "Perl", + 2 + ] + ] + }, + { + "name" : "Shahed Nooshmand", + "id" : "Shahed Nooshmand", + "data" : [ + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ] + }, + { + "data" : [ + [ + "Raku", + 2 + ] + ], + "id" : "Simon Proctor", + "name" : "Simon Proctor" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Wanderdoc", + "id" : "Wanderdoc" + }, + { + "name" : "Yet Ebreo", + "id" : "Yet Ebreo", + "data" : [ + [ + "Perl", + 2 + ] + ] + } + ] + }, + "tooltip" : { + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : 1, + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index d273d7872e..f5e3ecc63e 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,267 +1,37 @@ { - "series" : [ - { - "data" : [ - { - "y" : 4, - "drilldown" : "Arne Sommer", - "name" : "Arne Sommer" - }, - { - "y" : 1, - "name" : "Cheok-Yin Fung", - "drilldown" : "Cheok-Yin Fung" - }, - { - "drilldown" : "Colin Crain", - "name" : "Colin Crain", - "y" : 4 - }, - { - "name" : "Duncan C. White", - "drilldown" : "Duncan C. White", - "y" : 2 - }, - { - "drilldown" : "E. Choroba", - "name" : "E. Choroba", - "y" : 3 - }, - { - "name" : "Jared Martin", - "drilldown" : "Jared Martin", - "y" : 3 - }, - { - "y" : 5, - "drilldown" : "Javier Luque", - "name" : "Javier Luque" - }, - { - "name" : "Jorg Sommrey", - "drilldown" : "Jorg Sommrey", - "y" : 1 - }, - { - "drilldown" : "Kevin Colyer", - "name" : "Kevin Colyer", - "y" : 1 - }, - { - "y" : 5, - "drilldown" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld" - }, - { - "y" : 1, - "drilldown" : "Leo Manfredi", - "name" : "Leo Manfredi" - }, - { - "drilldown" : "Lubos Kolouch", - "name" : "Lubos Kolouch", - "y" : 1 - }, - { - "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari", - "y" : 4 - }, - { - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson", - "y" : 4 - }, - { - "drilldown" : "Mohammad S Anwar", - "name" : "Mohammad S Anwar", - "y" : 5 - }, - { - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West", - "y" : 2 - }, - { - "y" : 2, - "drilldown" : "Saif Ahmed", - "name" : "Saif Ahmed" - }, - { - "y" : 3, - "name" : "Shahed Nooshmand", - "drilldown" : "Shahed Nooshmand" - }, - { - "y" : 2, - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" - }, - { - "y" : 2, - "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke" - }, - { - "y" : 2, - "name" : "Wanderdoc", - "drilldown" : "Wanderdoc" - }, - { - "y" : 2, - "name" : "Yet Ebreo", - "drilldown" : "Yet Ebreo" - } - ], - "colorByPoint" : 1, - "name" : "Perl Weekly Challenge - 058" - } - ], - "title" : { - "text" : "Perl Weekly Challenge - 058" + "legend" : { + "enabled" : 0 + }, + "subtitle" : { + "text" : "[Champions: 1] Last updated at 2020-05-04 08:18:42 GMT" }, "chart" : { "type" : "column" }, - "xAxis" : { - "type" : "category" - }, "plotOptions" : { "series" : { - "borderWidth" : 0, "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 } }, - "subtitle" : { - "text" : "[Champions: 22] Last updated at 2020-05-03 23:36:09 GMT" + "title" : { + "text" : "Perl Weekly Challenge - 059" }, - "legend" : { - "enabled" : 0 + "xAxis" : { + "type" : "category" + }, + "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 }, "drilldown" : { "series" : [ { - "data" : [ - [ - "Perl", - 1 - ], - [ - "Raku", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Arne Sommer", - "name" : "Arne Sommer" - }, - { - "data" : [ - [ - "Perl", - 1 - ] - ], - "id" : "Cheok-Yin Fung", - "name" : "Cheok-Yin Fung" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Raku", - 2 - ] - ], - "name" : "Colin Crain", - "id" : "Colin Crain" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "name" : "Duncan C. White", - "id" : "Duncan C. White" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "E. Choroba", - "name" : "E. Choroba" - }, - { - "name" : "Jared Martin", - "id" : "Jared Martin", - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 1 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Raku", - 2 - ], - [ - "Blog", - 1 - ] - ], "name" : "Javier Luque", - "id" : "Javier Luque" - }, - { - "id" : "Jorg Sommrey", - "name" : "Jorg Sommrey", - "data" : [ - [ - "Perl", - 1 - ] - ] - }, - { - "data" : [ - [ - "Raku", - 1 - ] - ], - "id" : "Kevin Colyer", - "name" : "Kevin Colyer" - }, - { "data" : [ [ "Perl", @@ -276,156 +46,23 @@ 1 ] ], - "id" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld" - }, - { - "id" : "Leo Manfredi", - "name" : "Leo Manfredi", - "data" : [ - [ - "Perl", - 1 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 1 - ] - ], - "id" : "Lubos Kolouch", - "name" : "Lubos Kolouch" - }, - { - "data" : [ - [ - "Raku", - 2 - ], - [ - "Blog", - 2 - ] - ], - "id" : "Luca Ferrari", - "name" : "Luca Ferrari" - }, - { - "data" : [ - [ - |
