diff options
| author | robbie-hatley <Robbie.Hatley@gmail.com> | 2024-09-26 18:01:10 -0700 |
|---|---|---|
| committer | robbie-hatley <Robbie.Hatley@gmail.com> | 2024-09-26 18:01:10 -0700 |
| commit | 9feb4d34433f47049f681a5fc5f140e0adddf9b0 (patch) | |
| tree | 2b184110ee833f25486f1585caf8af82ec42c1ef | |
| parent | ac1ebe39431a887d9d8d3f64ce7fc204d516bdfc (diff) | |
| parent | e7fe0fc61e221a4f8e5bbb6848cfd81789ebf7a3 (diff) | |
| download | perlweeklychallenge-club-9feb4d34433f47049f681a5fc5f140e0adddf9b0.tar.gz perlweeklychallenge-club-9feb4d34433f47049f681a5fc5f140e0adddf9b0.tar.bz2 perlweeklychallenge-club-9feb4d34433f47049f681a5fc5f140e0adddf9b0.zip | |
Merge branch 'rh288' of https://github.com/robbie-hatley/perlweeklychallenge-club into rh288
27 files changed, 2718 insertions, 2463 deletions
diff --git a/challenge-288/arne-sommer/blog.txt b/challenge-288/arne-sommer/blog.txt new file mode 100644 index 0000000000..0eb1289e10 --- /dev/null +++ b/challenge-288/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/contiguously-closest.html diff --git a/challenge-288/arne-sommer/raku/ch-1.raku b/challenge-288/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..7588c739de --- /dev/null +++ b/challenge-288/arne-sommer/raku/ch-1.raku @@ -0,0 +1,32 @@ +#! /usr/bin/env raku + +unit sub MAIN ($str where $str ~~ UInt, :v(:$verbose)); + +my $lower = $str; +my $higher = $str; + +loop +{ + $lower -= 1; + + if $lower >= 0 + { + say ": Down: $lower (distance { $str - $lower })" if $verbose; + + if $lower.flip eq $lower + { + say $lower; + last; + } + } + + $higher += 1; + + say ": Up: $higher (distance { $higher - $str })" if $verbose; + + if $higher.flip eq $higher + { + say $higher; + last; + } +} diff --git a/challenge-288/arne-sommer/raku/ch-2.raku b/challenge-288/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..e77aa693d2 --- /dev/null +++ b/challenge-288/arne-sommer/raku/ch-2.raku @@ -0,0 +1,76 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@matrix where @matrix.elems > 0 && ( [==] @matrix>>.elems ) && all(@matrix) ~~ /^<[ox]>+$/, :v(:$verbose)); + +my @m = @matrix>>.comb>>.Array; + +print-matrix(@m) if $verbose; + +my $current = 1; + +my %replace; + +for ^@m.elems -> $row +{ + for ^@m[0].elems -> $col + { + my $curr = @m[$row][$col]; + my $todo = $curr eq any('o', 'x'); + + say ": Loop iteration at r:$row c:$col val:$curr - { $todo ?? "Enter, todo" !! "Skip, already done" }" if $verbose; + + next unless $todo; + + %replace{$current} = $curr; + + $current++ if set-value(@m, $row, $col, $curr, $current); + } +} + +sub set-value(@m, $row, $col, $swap, $replace) +{ + return unless 0 <= $row < @m.elems; + return unless 0 <= $col < @m[0].elems; + return unless @m[$row][$col] eq $swap; + + say ": - r:$row c:$col | Replace @m[$row][$col] with $replace" if $verbose; + + @m[$row][$col] = $replace; + + set-value(@m, $row -1, $col, $swap, $replace); + set-value(@m, $row, $col -1, $swap, $replace); + set-value(@m, $row, $col +1, $swap, $replace); + set-value(@m, $row +1, $col, $swap, $replace); + + return True; +} + +print-matrix(@m) if $verbose; + +my $bag = @m[*;*].Bag; +my @sorted = $bag.sort({ $^b.value <=> $^a.value }); + +say ": Bag { $bag.raku }" if $verbose; +say ": Bag Sort: { $bag.sort({ $^b.value <=> $^a.value }).raku }" if $verbose; + +print-matrix(@m, @sorted.first.key) if $verbose; + +say @sorted.first.value; + +multi sub print-matrix (@m) +{ + @m.map({ say ": " ~ $_.join(" ") }); +} + +multi sub print-matrix (@m, $match) +{ + my $col-blue = "\e[44m"; + my $col-green = "\e[42m"; + my $col-red = "\e[101m"; + my $col-stop = "\e[0m"; + + for @m -> @row + { + say ": " ~ @row.map({ $_ == $match ?? "$col-green%replace{$_}$col-stop" !! %replace{$_} }).join(" "); + } +} diff --git a/challenge-288/arne-sommer/raku/closest-palindrome b/challenge-288/arne-sommer/raku/closest-palindrome new file mode 100755 index 0000000000..7588c739de --- /dev/null +++ b/challenge-288/arne-sommer/raku/closest-palindrome @@ -0,0 +1,32 @@ +#! /usr/bin/env raku + +unit sub MAIN ($str where $str ~~ UInt, :v(:$verbose)); + +my $lower = $str; +my $higher = $str; + +loop +{ + $lower -= 1; + + if $lower >= 0 + { + say ": Down: $lower (distance { $str - $lower })" if $verbose; + + if $lower.flip eq $lower + { + say $lower; + last; + } + } + + $higher += 1; + + say ": Up: $higher (distance { $higher - $str })" if $verbose; + + if $higher.flip eq $higher + { + say $higher; + last; + } +} diff --git a/challenge-288/arne-sommer/raku/contiguous-block b/challenge-288/arne-sommer/raku/contiguous-block new file mode 100755 index 0000000000..e77aa693d2 --- /dev/null +++ b/challenge-288/arne-sommer/raku/contiguous-block @@ -0,0 +1,76 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@matrix where @matrix.elems > 0 && ( [==] @matrix>>.elems ) && all(@matrix) ~~ /^<[ox]>+$/, :v(:$verbose)); + +my @m = @matrix>>.comb>>.Array; + +print-matrix(@m) if $verbose; + +my $current = 1; + +my %replace; + +for ^@m.elems -> $row +{ + for ^@m[0].elems -> $col + { + my $curr = @m[$row][$col]; + my $todo = $curr eq any('o', 'x'); + + say ": Loop iteration at r:$row c:$col val:$curr - { $todo ?? "Enter, todo" !! "Skip, already done" }" if $verbose; + + next unless $todo; + + %replace{$current} = $curr; + + $current++ if set-value(@m, $row, $col, $curr, $current); + } +} + +sub set-value(@m, $row, $col, $swap, $replace) +{ + return unless 0 <= $row < @m.elems; + return unless 0 <= $col < @m[0].elems; + return unless @m[$row][$col] eq $swap; + + say ": - r:$row c:$col | Replace @m[$row][$col] with $replace" if $verbose; + + @m[$row][$col] = $replace; + + set-value(@m, $row -1, $col, $swap, $replace); + set-value(@m, $row, $col -1, $swap, $replace); + set-value(@m, $row, $col +1, $swap, $replace); + set-value(@m, $row +1, $col, $swap, $replace); + + return True; +} + +print-matrix(@m) if $verbose; + +my $bag = @m[*;*].Bag; +my @sorted = $bag.sort({ $^b.value <=> $^a.value }); + +say ": Bag { $bag.raku }" if $verbose; +say ": Bag Sort: { $bag.sort({ $^b.value <=> $^a.value }).raku }" if $verbose; + +print-matrix(@m, @sorted.first.key) if $verbose; + +say @sorted.first.value; + +multi sub print-matrix (@m) +{ + @m.map({ say ": " ~ $_.join(" ") }); +} + +multi sub print-matrix (@m, $match) +{ + my $col-blue = "\e[44m"; + my $col-green = "\e[42m"; + my $col-red = "\e[101m"; + my $col-stop = "\e[0m"; + + for @m -> @row + { + say ": " ~ @row.map({ $_ == $match ?? "$col-green%replace{$_}$col-stop" !! %replace{$_} }).join(" "); + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index a408e0e082..32948823b5 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,116 +1,140 @@ { - "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/>" + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "legend" : { + "enabled" : 0 }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "chart" : { - "type" : "column" + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "[Champions: 18] Last updated at 2024-09-26 19:54:14 GMT" }, "title" : { "text" : "The Weekly Challenge - 288" }, - "xAxis" : { - "type" : "category" - }, "series" : [ { - "colorByPoint" : 1, "name" : "The Weekly Challenge - 288", "data" : [ { + "name" : "Andre Ploger", + "y" : 3, + "drilldown" : "Andre Ploger" + }, + { "y" : 3, - "drilldown" : "Andre Ploger", - "name" : "Andre Ploger" + "name" : "Arne Sommer", + "drilldown" : "Arne Sommer" }, { "y" : 2, - "drilldown" : "Dave Jacoby", - "name" : "Dave Jacoby" + "name" : "Dave Jacoby", + "drilldown" : "Dave Jacoby" }, { - "name" : "David Ferrone", + "drilldown" : "David Ferrone", "y" : 2, - "drilldown" : "David Ferrone" + "name" : "David Ferrone" }, { - "name" : "E. Choroba", + "drilldown" : "E. Choroba", "y" : 2, - "drilldown" : "E. Choroba" + "name" : "E. Choroba" }, { - "name" : "Feng Chang", "drilldown" : "Feng Chang", + "name" : "Feng Chang", "y" : 2 }, { + "y" : 2, "name" : "Kjetil Skotheim", - "drilldown" : "Kjetil Skotheim", - "y" : 2 + "drilldown" : "Kjetil Skotheim" }, { - "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld", "y" : 3, - "drilldown" : "Laurent Rosenfeld" + "name" : "Laurent Rosenfeld" }, { - "name" : "Lubos Kolouch", "drilldown" : "Lubos Kolouch", - "y" : 2 + "y" : 2, + "name" : "Lubos Kolouch" }, { + "y" : 5, "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari", - "y" : 5 + "drilldown" : "Luca Ferrari" }, { - "y" : 5, "drilldown" : "Packy Anderson", - "name" : "Packy Anderson" + "name" : "Packy Anderson", + "y" : 5 }, { - "name" : "Paulo Custodio", "drilldown" : "Paulo Custodio", - "y" : 2 + "y" : 2, + "name" : "Paulo Custodio" }, { - "name" : "Peter Campbell Smith", + "drilldown" : "Peter Campbell Smith", "y" : 3, - "drilldown" : "Peter Campbell Smith" + "name" : "Peter Campbell Smith" }, { - "name" : "Reinier Maliepaard", "y" : 2, + "name" : "Reinier Maliepaard", "drilldown" : "Reinier Maliepaard" }, { - "name" : "Roger Bell_West", + "drilldown" : "Robbie Hatley", + "name" : "Robbie Hatley", + "y" : 3 + }, + { "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West", "y" : 4 }, { + "y" : 3, "name" : "Torgny Lyon", - "drilldown" : "Torgny Lyon", - "y" : 3 + "drilldown" : "Torgny Lyon" }, { "name" : "W. Luis Mochan", - "drilldown" : "W. Luis Mochan", - "y" : 3 + "y" : 3, + "drilldown" : "W. Luis Mochan" } - ] + ], + "colorByPoint" : 1 } ], + "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 + }, + "chart" : { + "type" : "column" + }, "drilldown" : { "series" : [ { "name" : "Andre Ploger", - "id" : "Andre Ploger", "data" : [ [ "Perl", @@ -120,7 +144,22 @@ "Blog", 1 ] - ] + ], + "id" : "Andre Ploger" + }, + { + "id" : "Arne Sommer", + "data" : [ + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "name" : "Arne Sommer" }, { "name" : "Dave Jacoby", @@ -157,28 +196,26 @@ "name" : "E. Choroba" }, { - "id" : "Feng Chang", "data" : [ [ "Raku", 2 ] ], + "id" : "Feng Chang", "name" : "Feng Chang" }, { + "id" : "Kjetil Skotheim", "data" : [ [ "Perl", 2 ] ], - "id" : "Kjetil Skotheim", "name" : "Kjetil Skotheim" }, { - "name" : "Laurent Rosenfeld", - "id" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -192,21 +229,22 @@ "Blog", 1 ] - ] + ], + "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld" }, { - "id" : "Lubos Kolouch", "data" : [ [ "Perl", 2 ] ], - "name" : "Lubos Kolouch" + "name" : "Lubos Kolouch", + "id" : "Lubos Kolouch" }, { "name" : "Luca Ferrari", - "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -216,10 +254,10 @@ "Blog", 3 ] - ] + ], + "id" : "Luca Ferrari" }, { - "name" : "Packy Anderson", "id" : "Packy Anderson", "data" : [ [ @@ -234,7 +272,8 @@ "Blog", 1 ] - ] + ], + "name" : "Packy Anderson" }, { "data" : [ @@ -243,11 +282,11 @@ 2 ] ], - "id" : "Paulo Custodio", - "name" : "Paulo Custodio" + "name" : "Paulo Custodio", + "id" : "Paulo Custodio" }, { - "id" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -258,9 +297,10 @@ 1 ] ], - "name" : "Peter Campbell Smith" + "id" : "Peter Campbell Smith" }, { + "name" : "Reinier Maliepaard", "data" : [ [ "Perl", @@ -271,11 +311,23 @@ 1 ] ], - "id" : "Reinier Maliepaard", - "name" : "Reinier Maliepaard" + "id" : "Reinier Maliepaard" + }, + { + "name" : "Robbie Hatley", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Robbie Hatley" }, { - "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -286,6 +338,7 @@ 2 ] ], + "id" : "Roger Bell_West", "name" : "Roger Bell_West" }, { @@ -299,8 +352,8 @@ 1 ] ], - "id" : "Torgny Lyon", - "name" : "Torgny Lyon" + "name" : "Torgny Lyon", + "id" : "Torgny Lyon" }, { "data" : [ @@ -313,24 +366,9 @@ 1 ] ], - "id" : "W. Luis Mochan", - "name" : "W. Luis Mochan" + "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan" } ] - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "subtitle" : { - "text" : "[Champions: 16] Last updated at 2024-09-26 08:43:38 GMT" - }, - "legend" : { - "enabled" : 0 } } diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json index 69279fd676..3c42d47d10 100644 --- a/stats/pwc-language-breakdown-2019.json +++ b/stats/pwc-language-breakdown-2019.json @@ -1,28 +1,51 @@ { + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "legend" : { + "enabled" : "false" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2024-09-26 19:54:14 GMT" + }, "series" : [ { - "name" : "The Weekly Challenge Languages", "colorByPoint" : "true", + "name" : "The Weekly Challenge Languages", "data" : [ { + "name" : "041", "y" : 80, - "drilldown" : "041", - "name" : "041" + "drilldown" : "041" }, { + "drilldown" : "040", "name" : "040", - "y" : 77, - "drilldown" : "040" + "y" : 77 }, { - "drilldown" : "039", "y" : 68, - "name" : "039" + "name" : "039", + "drilldown" : "039" }, { + "drilldown" : "038", "name" : "038", - "y" : 74, - "drilldown" : "038" + "y" : 74 }, { "drilldown" : "037", @@ -30,119 +53,119 @@ "name" : "037" }, { - "drilldown" : "036", "y" : 70, - "name" : "036" + "name" : "036", + "drilldown" : "036" }, { "name" : "035", - "drilldown" : "035", - "y" : 68 + "y" : 68, + "drilldown" : "035" }, { - "y" : 70, "drilldown" : "034", + "y" : 70, "name" : "034" }, { - "name" : "033", + "drilldown" : "033", "y" : 113, - "drilldown" : "033" + "name" : "033" }, { + "name" : "032", "y" : 97, - "drilldown" : "032", - "name" : "032" + "drilldown" : "032" }, { + "drilldown" : "031", "name" : "031", - "y" : 93, - "drilldown" : "031" + "y" : 93 }, { - "drilldown" : "030", "y" : 120, - "name" : "030" + "name" : "030", + "drilldown" : "030" }, { "name" : "029", - "drilldown" : "029", - "y" : 83 + "y" : 83, + "drilldown" : "029" }, { - "name" : "028", "y" : 82, + "name" : "028", "drilldown" : "028" }, { - "name" : "027", "drilldown" : "027", - "y" : 64 + "y" : 64, + "name" : "027" }, { - "name" : "026", "drilldown" : "026", + "name" : "026", "y" : 75 }, { + "drilldown" : "025", "name" : "025", - "y" : 62, - "drilldown" : "025" + "y" : 62 }, { + "drilldown" : "024", "name" : "024", - "y" : 77, - "drilldown" : "024" + "y" : 77 }, { "y" : 88, - "drilldown" : "023", - "name" : "023" + "name" : "023", + "drilldown" : "023" }, { "name" : "022", - "drilldown" : "022", - "y" : 72 + "y" : 72, + "drilldown" : "022" }, { "name" : "021", - "drilldown" : "021", - "y" : 72 + "y" : 72, + "drilldown" : "021" }, { - "y" : 100, "drilldown" : "020", - "name" : "020" + "name" : "020", + "y" : 100 }, { - "name" : "019", "drilldown" : "019", - "y" : 101 + "y" : 101, + "name" : "019" }, { "name" : "018", - "drilldown" : "018", - "y" : 82 + "y" : 82, + "drilldown" : "018" }, { - "drilldown" : "017", "y" : 83, - "name" : "017" + "name" : "017", + "drilldown" : "017" }, { - "name" : "016", "drilldown" : "016", - "y" : 75 + "y" : 75, + "name" : "016" }, { "drilldown" : "015", - "y" : 95, - "name" : "015" + "name" : "015", + "y" : 95 }, { - "y" : 98, "drilldown" : "014", - "name" : "014" + "name" : "014", + "y" : 98 }, { "drilldown" : "013", @@ -151,13 +174,13 @@ }, { "drilldown" : "012", - "y" : 90, - "name" : "012" + "name" : "012", + "y" : 90 }, { - "name" : "011", + "drilldown" : "011", "y" : 86, - "drilldown" : "011" + "name" : "011" }, { "name" : "010", @@ -166,37 +189,37 @@ }, { "y" : 79, - "drilldown" : "009", - "name" : "009" + "name" : "009", + "drilldown" : "009" }, { + "name" : "008", "y" : 82, - "drilldown" : "008", - "name" : "008" + "drilldown" : "008" }, { "name" : "007", - "drilldown" : "007", - "y" : 71 + "y" : 71, + "drilldown" : "007" }, { "name" : "006", - "drilldown" : "006", - "y" : 63 + "y" : 63, + "drilldown" : "006" }, { + "name" : "005", "y" : 82, - "drilldown" : "005", - "name" : "005" + "drilldown" : "005" }, { + "drilldown" : "004", "name" : "004", - "y" : 106, - "drilldown" : "004" + "y" : 106 }, { - "name" : "003", "y" : 91, + "name" : "003", "drilldown" : "003" }, { @@ -205,40 +228,19 @@ "name" : "002" }, { - "drilldown" : "001", "y" : 165, - "name" : "001" + "name" : "001", + "drilldown" : "001" } ] } ], - "xAxis" : { - "type" : "category" - |
