diff options
| author | Mohammad Sajid Anwar <mohammad.anwar@yahoo.com> | 2024-08-08 16:36:22 +0100 |
|---|---|---|
| committer | Mohammad Sajid Anwar <mohammad.anwar@yahoo.com> | 2024-08-08 16:36:22 +0100 |
| commit | 47c4cea4080b4051d024685bedd5290e205cca74 (patch) | |
| tree | 285784b285e8dd84e589cc249d5a1eb06ac14a4f | |
| parent | 4a8ca815a012b6121ae212509865ff9c40e87d7d (diff) | |
| download | perlweeklychallenge-club-47c4cea4080b4051d024685bedd5290e205cca74.tar.gz perlweeklychallenge-club-47c4cea4080b4051d024685bedd5290e205cca74.tar.bz2 perlweeklychallenge-club-47c4cea4080b4051d024685bedd5290e205cca74.zip | |
- Added solutions by Luca Ferrari.
- Added solutions by Robert Ransbottom.
- Added solutions by Laurent Rosenfeld.
25 files changed, 2974 insertions, 2854 deletions
diff --git a/challenge-281/laurent-rosenfeld/blog1.txt b/challenge-281/laurent-rosenfeld/blog1.txt new file mode 100644 index 0000000000..a825148645 --- /dev/null +++ b/challenge-281/laurent-rosenfeld/blog1.txt @@ -0,0 +1 @@ +https://blogs.perl.org/users/laurent_r/2024/08/perl-weekly-challenge-281-knights-move.html diff --git a/challenge-281/laurent-rosenfeld/perl/ch-2.pl b/challenge-281/laurent-rosenfeld/perl/ch-2.pl new file mode 100644 index 0000000000..78b804f8bd --- /dev/null +++ b/challenge-281/laurent-rosenfeld/perl/ch-2.pl @@ -0,0 +1,45 @@ +use strict; +use warnings; +use feature 'say'; + +my @moves = ( [<2 1>], [<2 -1>], [<1 2>], [<1 -2>], + [<-1 2>], [<-1 -2>], [<-2 1>], [<-2 -1>] ); + +sub to_coordinates { + my ($col, $row) = split //, shift; + return ord($col) - ord('a'), $row - 1; +} + +sub find_shortest { + my ($st_in, $end_in) = @_; + # convert input to Cartesian coordinates + my @start = to_coordinates $st_in; + my @end = to_coordinates $end_in; + + my @to_be_explored; # a queue of squares to be visited + push @to_be_explored, [0, @start]; + my %seen = ("@start" => 1); # already visited squares + while (@to_be_explored) { + my $node = shift @to_be_explored; + my ($depth, @current) = @$node; + return $depth if "@current" eq "@end"; + for my $move (@moves) { + my @next = ( $current[0] + $move->[0], + $current[1] + $move->[1] ); + # dismiss if computed position not on chessboard + next if $next[0] > 7 or $next[0] < 0 or + $next[1] > 7 or $next[1] < 0; + # dismiss if computed position already visited + next if exists $seen{"@next"}; + # update seen hash and to_be_explored queue + $seen{"@next"} = 1; + push @to_be_explored, [$depth + 1, @next]; + } + } +} + +my @tests = ([<g2 a8>], [<g2 h2>]); +for my $test (@tests) { + printf "%-6s => ", "@$test"; + say find_shortest @$test;; +} diff --git a/challenge-281/laurent-rosenfeld/raku/ch-2.raku b/challenge-281/laurent-rosenfeld/raku/ch-2.raku new file mode 100644 index 0000000000..930a2ec7fe --- /dev/null +++ b/challenge-281/laurent-rosenfeld/raku/ch-2.raku @@ -0,0 +1,40 @@ +my @moves = <2 1>, <2 -1>, <1 2>, <1 -2>, + <-1 2>, <-1 -2>, <-2 1>, <-2 -1>; + +sub to-coordinates ($in) { + my ($col, $row) = $in.comb; + return $col.ord - 'a'.ord, $row - 1; +} + +sub find-shortest ($st-in, $end-in) { + # convert input to Cartesian coordinates + my @start = to-coordinates $st-in; + my @end = to-coordinates $end-in; + + my @to-be-explored; # a queue of squares to be visited + push @to-be-explored, (0, @start).flat; + my %seen = "@start[]" => 1; # already visited squares + + while @to-be-explored { + my @node = shift @to-be-explored; + my ($depth, @current) = @node[0]; + return $depth if "@current[]" eq "@end[]"; + for @moves -> @move { + my @next = @current[0] + @move[0], + @current[1] + @move[1]; + # dismiss if computed position not on chessboard + next if @next.any > 7 or @next.any < 0; + # dismiss if computed position already visited + next if %seen{"@next[]"}:exists; + # update seen hash and to-be-explored queue + %seen{"@next[]"} = 1; + push @to-be-explored, ($depth + 1, @next).flat; + } + } +} + +my @tests = <g2 a8>, <g2 h2>; +for @tests -> @test { + printf "%-6s => ", "@test[]"; + say find-shortest @test[0], @test[1]; +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index beba319a87..14f69a3647 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,146 +1,15 @@ { - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } + "xAxis" : { + "type" : "category" }, - "legend" : { - "enabled" : 0 + "subtitle" : { + "text" : "[Champions: 22] Last updated at 2024-08-08 15:35:51 GMT" }, "tooltip" : { - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", "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/>" }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "chart" : { - "type" : "column" - }, - "series" : [ - { - "name" : "The Weekly Challenge - 281", - "colorByPoint" : 1, - "data" : [ - { - "name" : "Alexander Karelas", - "drilldown" : "Alexander Karelas", - "y" : 2 - }, - { - "name" : "Dave Jacoby", - "drilldown" : "Dave Jacoby", - "y" : 3 - }, - { - "name" : "David Ferrone", - "drilldown" : "David Ferrone", - "y" : 2 - }, - { - "y" : 2, - "drilldown" : "E. Choroba", - "name" : "E. Choroba" - }, - { - "drilldown" : "Feng Chang", - "y" : 2, - "name" : "Feng Chang" - }, - { - "drilldown" : "Jan Krnavek", - "y" : 2, - "name" : "Jan Krnavek" - }, - { - "y" : 2, - "drilldown" : "Kjetil Skotheim", - "name" : "Kjetil Skotheim" - }, - { - "drilldown" : "Laurent Rosenfeld", - "y" : 3, - "name" : "Laurent Rosenfeld" - }, - { - "drilldown" : "Mariano Ortega", - "y" : 2, - "name" : "Mariano Ortega" - }, - { - "drilldown" : "Mark Anderson", - "y" : 2, - "name" : "Mark Anderson" - }, - { - "name" : "Packy Anderson", - "drilldown" : "Packy Anderson", - "y" : 5 - }, - { - "name" : "Peter Campbell Smith", - "drilldown" : "Peter Campbell Smith", - "y" : 3 - }, - { - "name" : "Peter Meszaros", - "drilldown" : "Peter Meszaros", - "y" : 2 - }, - { - "name" : "Reinier Maliepaard", - "drilldown" : "Reinier Maliepaard", - "y" : 3 - }, - { - "y" : 3, - "drilldown" : "Robbie Hatley", - "name" : "Robbie Hatley" - }, - { - "y" : 4, - "drilldown" : "Roger Bell_West", - "name" : "Roger Bell_West" - }, - { - "name" : "Thomas Kohler", - "drilldown" : "Thomas Kohler", - "y" : 4 - }, - { - "y" : 4, - "drilldown" : "Ulrich Rieke", - "name" : "Ulrich Rieke" - }, - { - "drilldown" : "W. Luis Mochan", - "y" : 3, - "name" : "W. Luis Mochan" - }, - { - "drilldown" : "Wanderdoc", - "y" : 2, - "name" : "Wanderdoc" - } - ] - } - ], - "title" : { - "text" : "The Weekly Challenge - 281" - }, - "xAxis" : { - "type" : "category" - }, - "subtitle" : { - "text" : "[Champions: 20] Last updated at 2024-08-08 08:45:06 GMT" - }, "drilldown" : { "series" : [ { @@ -154,8 +23,6 @@ ] }, { - "name" : "Dave Jacoby", - "id" : "Dave Jacoby", "data" : [ [ "Perl", @@ -165,47 +32,49 @@ "Blog", 1 ] - ] + ], + "id" : "Dave Jacoby", + "name" : "Dave Jacoby" }, { "name" : "David Ferrone", - "id" : "David Ferrone", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "David Ferrone" }, { - "name" : "E. Choroba", + "id" : "E. Choroba", "data" : [ [ "Perl", 2 ] ], - "id" : "E. Choroba" + "name" : "E. Choroba" }, { + "id" : "Feng Chang", "data" : [ [ "Raku", 2 ] ], - "id" : "Feng Chang", "name" : "Feng Chang" }, { + "name" : "Jan Krnavek", "id" : "Jan Krnavek", "data" : [ [ "Raku", 2 ] - ], - "name" : "Jan Krnavek" + ] }, { "name" : "Kjetil Skotheim", @@ -218,45 +87,58 @@ "id" : "Kjetil Skotheim" }, { - "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", "data" : [ [ "Perl", - 1 + 2 ], [ "Raku", - 1 + 2 ], [ "Blog", - 1 + 2 + ] + ], + "id" : "Laurent Rosenfeld" + }, + { + "id" : "Luca Ferrari", + "data" : [ + [ + "Raku", + 2 + ], + [ + "Blog", + 2 ] ], - "name" : "Laurent Rosenfeld" + "name" : "Luca Ferrari" }, { - "name" : "Mariano Ortega", "data" : [ [ "Perl", 2 ] ], - "id" : "Mariano Ortega" + "id" : "Mariano Ortega", + "name" : "Mariano Ortega" }, { + "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] ], - "id" : "Mark Anderson", - "name" : "Mark Anderson" + "id" : "Mark Anderson" }, { - "name" : "Packy Anderson", "data" : [ [ "Perl", @@ -271,10 +153,10 @@ 1 ] ], - "id" : "Packy Anderson" + "id" : "Packy Anderson", + "name" : "Packy Anderson" }, { - "id" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -285,19 +167,21 @@ 1 ] ], + "id" : "Peter Campbell Smith", "name" : "Peter Campbell Smith" }, { + "name" : "Peter Meszaros", "id" : "Peter Meszaros", "data" : [ [ "Perl", 2 ] - ], - "name" : "Peter Meszaros" + ] }, { + "id" : "Reinier Maliepaard", "data" : [ [ "Perl", @@ -308,11 +192,10 @@ 1 ] ], - "id" : "Reinier Maliepaard", "name" : "Reinier Maliepaard" }, { - "name" : "Robbie Hatley", + "id" : "Robbie Hatley", "data" : [ [ "Perl", @@ -323,10 +206,19 @@ 1 ] ], - "id" : "Robbie Hatley" + "name" : "Robbie Hatley" + }, + { + "id" : "Robert Ransbottom", + "data" : [ + [ + "Raku", + 2 + ] + ], + "name" : "Robert Ransbottom" }, { - "name" : "Roger Bell_West", "id" : "Roger Bell_West", "data" : [ [ @@ -337,7 +229,8 @@ "Raku", 2 ] - ] + ], + "name" : "Roger Bell_West" }, { "name" : "Thomas Kohler", @@ -354,7 +247,6 @@ ] }, { - "id" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -365,9 +257,12 @@ 2 ] ], + "id" : "Ulrich Rieke", "name" : "Ulrich Rieke" }, { + "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -377,20 +272,159 @@ "Blog", 1 ] - ], - "id" : "W. Luis Mochan", - "name" : "W. Luis Mochan" + ] }, { + "id" : "Wanderdoc", "data" : [ [ "Perl", 2 ] ], - "id" : "Wanderdoc", "name" : "Wanderdoc" } ] - } + }, + "legend" : { + "enabled" : 0 + }, + "title" : { + "text" : "The Weekly Challenge - 281" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "chart" : { + "type" : "column" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "series" : [ + { + "data" : [ + { + "name" : "Alexander Karelas", + "drilldown" : "Alexander Karelas", + "y" : 2 + }, + { + "name" : "Dave Jacoby", + "y" : 3, + "drilldown" : "Dave Jacoby" + }, + { + "name" : "David Ferrone", + "drilldown" : "David Ferrone", + "y" : 2 + }, + { + "name" : "E. Choroba", + "drilldown" : "E. Choroba", + "y" : 2 + }, + { + "drilldown" : "Feng Chang", + "y" : 2, + "name" : "Feng Chang" + }, + { + "name" : "Jan Krnavek", + "y" : 2, + "drilldown" : "Jan Krnavek" + }, + { + "name" : "Kjetil Skotheim", + "y" : 2, + "drilldown" : "Kjetil Skotheim" + }, + { + "name" : "Laurent Rosenfeld", + "y" : 6, + "drilldown" : "Laurent Rosenfeld" + }, + { + "drilldown" : "Luca Ferrari", + "y" : 4, + "name" : "Luca Ferrari" + }, + { + "drilldown" : "Mariano Ortega", + "y" : 2, + "name" : "Mariano Ortega" + }, + { + "drilldown" : "Mark Anderson", + "y" : 2, + "name" : "Mark Anderson" + }, + { + "drilldown" : "Packy Anderson", + "y" : 5, + "name" : "Packy Anderson" + }, + { + "name" : "Peter Campbell Smith", + "y" : 3, + "drilldown" : "Peter Campbell Smith" + }, + { + "name" : "Peter Meszaros", + "y" : 2, + "drilldown" : "Peter Meszaros" + }, + { + "drilldown" : "Reinier Maliepaard", + "y" : 3, + "name" : "Reinier Maliepaard" + }, + { + "y" : 3, + "drilldown" : "Robbie Hatley", + "name" : "Robbie Hatley" + }, + { + "name" : "Robert Ransbottom", + "drilldown" : "Robert Ransbottom", + "y" : 2 + }, + { + "y" : 4, + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West" + }, + { + "drilldown" : "Thomas Kohler", + "y" : 4, + "name" : "Thomas Kohler" + }, + { + "y" : 4, + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke" + }, + { + "name" : "W. Luis Mochan", + "y" : 3, + "drilldown" : "W. Luis Mochan" + }, + { + "drilldown" : "Wanderdoc", + "y" : 2, + "name" : "Wanderdoc" + } + ], + "name" : "The Weekly Challenge - 281", + "colorByPoint" : 1 + } + ] } diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json index 6e7c81dbfb..01396845e8 100644 --- a/stats/pwc-language-breakdown-2019.json +++ b/stats/pwc-language-breakdown-2019.json @@ -1,8 +1,241 @@ { + "chart" : { + "type" : "column" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "series" : [ + { + "name" : "The Weekly Challenge Languages", + "data" : [ + { + "y" : 80, + "drilldown" : "041", + "name" : "041" + }, + { + "name" : "040", + "y" : 77, + "drilldown" : "040" + }, + { + "y" : 68, + "drilldown" : "039", + "name" : "039" + }, + { + "name" : "038", + "y" : 74, + "drilldown" : "038" + }, + { + "y" : 70, + "drilldown" : "037", + "name" : "037" + }, + { + "name" : "036", + "y" : 70, + "drilldown" : "036" + }, + { + "name" : "035", + "drilldown" : "035", + "y" : 68 + }, + { + "name" : "034", + "y" : 70, + "drilldown" : "034" + }, + { + "y" : 113, + "drilldown" : "033", + "name" : "033" + }, + { + "name" : "032", + "drilldown" : "032", + "y" : 97 + }, + { + "drilldown" : "031", + "y" : 93, + "name" : "031" + }, + { + "drilldown" : "030", + "y" : 120, + "name" : "030" + }, + { + "name" : "029", + "drilldown" : "029", + "y" : 83 + }, + { + "y" : 82, + "drilldown" : "028", + "name" : "028" + }, + { + "drilldown" : "027", + "y" : 64, + "name" : "027" + }, + { + "name" : "026", + "y" : 75, + "drilldown" : "026" + }, + { + "name" : "025", + "drilldown" : "025", + "y" : 62 + }, + { + "y" : 77, + "drilldown" : "024", + "name" : "024" + }, + { + "drilldown" : "023", + "y" : 88, + "name" : "023" + }, + { + "name" : "022", + "drilldown" : "022", + "y" : 72 + }, + { + "y" : 72, + "drilldown" : "021", + "name" : "021" + }, + { + "name" : "020", + "y" : 100, + "drilldown" : "020" + }, + { + "drilldown" : "019", + "y" : 101, + "name" : "019" + }, + { + "name" : "018", + "y" : 82, + "drilldown" : "018" + }, + { + "name" : "017", + "y" : 83, + "drilldown" : "017" + }, + { + "drilldown" : "016", + "y" : 75, + "name" : "016" + }, + { + "drilldown" : "015", + "y" : 95, + "name" : "015" + }, + { + "y" : 98, + "drilldown" : "014", + "name" : "014" + }, + { + "name" : "013", + "drilldown" : "013", + "y" : 85 + }, + { + "drilldown" : "012", + "y" : 90, + "name" : "012" + }, + { + "y" : 86, + "drilldown" : "011", + "name" : "011" + }, + { + "y" : 69, + "drilldown" : "010", + "name" : "010" + }, + { + "name" : "009", + "y" : 79, + "drilldown" : "009" + }, + { + "name" : "008", + "drilldown" : "008", + "y" : 82 + }, + { + "drilldown" : "007", + "y" : 71, + "name" : "007" + }, + { + "name" : "006", + "drilldown" : "006", + "y" : 63 + }, + { + "drilldown" : "005", + "y" : 82, + "name" : "005" + }, + { + "name" : "004", + "drilldown" : "004", + "y" : 106 + }, + { + "name" : "003", + "y" : 91, + "drilldown" : "003" + }, + { + "name" : "002", + "drilldown" : "002", + "y" : 133 + }, + { + "drilldown" : "001", + "y" : 165, + "name" : "001" + } + ], + "colorByPoint" : "true" + } + ], + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2024-08-08 15:35:51 GMT" + }, + "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" + }, "drilldown" : { "series" : [ { "name" : "041", + "id" : "041", "data" : [ [ "Perl", @@ -16,8 +249,7 @@ "Blog", 9 ] - ], - "id" : "041" + ] }, { "name" : "040", @@ -57,7 +289,6 @@ }, { "name" : "038", - "id" : "038", "data" : [ [ "Perl", @@ -71,9 +302,11 @@ "Blog", 12 ] - ] + ], + "id" : "038" }, { + "id" : "037", "data" : [ [ "Perl", @@ -88,7 +321,6 @@ 9 ] ], - "id" : "037", "name" : "037" }, { @@ -128,7 +360,6 @@ "name" : "035" }, { - "name" : "034", "data" : [ [ "Perl", @@ -143,7 +374,8 @@ 11 ] ], - "id" : "034" + "id" : "034", + "name" : "034" }, { "id" : "033", @@ -165,7 +397,6 @@ }, { |
