diff options
| -rw-r--r-- | challenge-169/laurent-rosenfeld/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-169/laurent-rosenfeld/perl/ch-1.pl | 19 | ||||
| -rw-r--r-- | challenge-169/laurent-rosenfeld/perl/ch-2.pl | 88 | ||||
| -rw-r--r-- | challenge-169/laurent-rosenfeld/raku/ch-1.raku | 4 | ||||
| -rw-r--r-- | challenge-169/laurent-rosenfeld/raku/ch-2.raku | 25 | ||||
| -rw-r--r-- | stats/pwc-current.json | 153 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 60 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 1058 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 370 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 34 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 34 | ||||
| -rw-r--r-- | stats/pwc-summary-211-240.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary-241-270.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 52 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 96 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 112 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 58 |
19 files changed, 1307 insertions, 1147 deletions
diff --git a/challenge-169/laurent-rosenfeld/blog.txt b/challenge-169/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..0d2f2f48df --- /dev/null +++ b/challenge-169/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2022/06/perl-weekly-challenge-169-brillant-nummbers-and-achilles-numbers.html diff --git a/challenge-169/laurent-rosenfeld/perl/ch-1.pl b/challenge-169/laurent-rosenfeld/perl/ch-1.pl new file mode 100644 index 0000000000..33851060a7 --- /dev/null +++ b/challenge-169/laurent-rosenfeld/perl/ch-1.pl @@ -0,0 +1,19 @@ +use strict; +use warnings; +use feature "say"; + +my @small_primes = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29); + +sub combine { + my @primes = @_; + my %part_result; + for my $i (0..$#primes) { + for my $j ($i..$#primes) { + $part_result{$primes[$i] * $primes[$j]} = 1; + } + } + return sort {$a <=> $b} keys %part_result; +} +my @result = combine @small_primes[0..3]; +push @result, combine @small_primes[4..9]; +say "@result[0..19]"; diff --git a/challenge-169/laurent-rosenfeld/perl/ch-2.pl b/challenge-169/laurent-rosenfeld/perl/ch-2.pl new file mode 100644 index 0000000000..dfe7d432ed --- /dev/null +++ b/challenge-169/laurent-rosenfeld/perl/ch-2.pl @@ -0,0 +1,88 @@ +#!/usr/bin/perl +use strict; +use warnings; +use feature qw/say/; +use Data::Dumper; +use constant MAX => 500; + +my @primes = (2, 3, 5, 7); + +# Greatest common divisor of two or more integers +sub gcd { + if (@_ > 2) { + return gcd( gcd($_[0], $_[1]), @_[2..$#_]); + } else { + my ($i, $j) = sort { $a <=> $b } @_; + while ($j) { + ($i, $j) = ($j, $i % $j); + } + return $i; + } +} + +# Creating a hash of prime factors (as keys) with their powers (as values) +sub prime_factors { + my $num = shift; + my $origin_num = $num; + my %factors; + for my $div (@primes) { + while ($num % $div == 0) { + $factors{$div}++; + $num /= $div; + } + return %factors if $num == 1; + } + $factors{$num}++ unless $num == $origin_num; + return %factors; +} + + +# Populating an array of primes up to MAX +my $current = 9; +while (1) { + my $prime = 1; + for my $i (@primes) { + my $i_sq = $i * $i; + last if $i_sq > $current; + $prime = 0, last if $current % $i == 0; + } + push @primes, $current if $prime;; + $current += 2; + last if $current > MAX; +} + +my $count = 0; +for my $n (1..MAX*MAX) { + my %factors = prime_factors $n; + my @powers = map $factors{$_}, keys %factors; + next if grep { $_ < 2} @powers; + next if scalar @powers < 2; + if (gcd(@powers) == 1) { + printf "%4d -> %s\n", $n, join " ", @powers; + $count++; + last if $count >= 20 + } + +This script displays the following output: + +$ perl ./Achilles_nums.pl + 72 -> 2 3 + 108 -> 2 3 + 200 -> 3 2 + 288 -> 5 2 + 392 -> 3 2 + 432 -> 3 4 + 500 -> 3 2 + 648 -> 4 3 + 675 -> 2 3 + 800 -> 2 5 + 864 -> 3 5 + 968 -> 3 2 + 972 -> 5 2 +1125 -> 2 3 +1152 -> 2 7 +1323 -> 2 3 +1352 -> 2 3 +1372 -> 2 3 +1568 -> 5 2 +1800 -> 2 2 3 diff --git a/challenge-169/laurent-rosenfeld/raku/ch-1.raku b/challenge-169/laurent-rosenfeld/raku/ch-1.raku new file mode 100644 index 0000000000..8836b199c0 --- /dev/null +++ b/challenge-169/laurent-rosenfeld/raku/ch-1.raku @@ -0,0 +1,4 @@ +my @small-primes = 2, 3, 5, 7, 11, 13, 17, 19, 23, 29; +my @result = (@small-primes[0..3] X* @small-primes[0..3]).sort.squish; +append @result, (@small-primes[4..9] X* @small-primes[4..9]).sort.squish; +say @result[0..19]; diff --git a/challenge-169/laurent-rosenfeld/raku/ch-2.raku b/challenge-169/laurent-rosenfeld/raku/ch-2.raku new file mode 100644 index 0000000000..6b6a4f1879 --- /dev/null +++ b/challenge-169/laurent-rosenfeld/raku/ch-2.raku @@ -0,0 +1,25 @@ +my @primes = (2..1000).grep({.is-prime}); + +sub prime-factors (UInt $num-in) { + my $factors = BagHash.new; + my $num = $num-in; + for @primes -> $div { + while ($num %% $div) { + $factors{$div}++; + $num div= $div; + } + return $factors if $num == 1; + } + $factors{$num}++ unless $num == $num-in; + return $factors; +} + +my $count = 0; +for 1..Inf -> $n { + my @powers = (prime-factors $n).values; + if @powers.none < 2 and @powers.elems > 1 and ([gcd] @powers) == 1 { + say $n.fmt("%4d"), " -> ", @powers; + $count++; + last if $count >= 20 + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 8277fb047f..0565f7fecf 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,65 +1,51 @@ { - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, "legend" : { "enabled" : 0 }, - "tooltip" : { - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", - "followPointer" : 1, - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" - }, "chart" : { "type" : "column" }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, "xAxis" : { "type" : "category" }, "series" : [ { - "colorByPoint" : 1, + "name" : "The Weekly Challenge - 169", "data" : [ { - "drilldown" : "Dario Mazzeo", "name" : "Dario Mazzeo", + "drilldown" : "Dario Mazzeo", "y" : 1 }, { "name" : "E. Choroba", - "y" : 2, - "drilldown" : "E. Choroba" + "drilldown" : "E. Choroba", + "y" : 2 }, { - "name" : "habere-et-dispetire", "y" : 2, - "drilldown" : "habere-et-dispetire" + "drilldown" : "habere-et-dispetire", + "name" : "habere-et-dispetire" }, { - "drilldown" : "James Smith", "y" : 3, + "drilldown" : "James Smith", "name" : "James Smith" }, { + "drilldown" : "Laurent Rosenfeld", + "y" : 5, + "name" : "Laurent Rosenfeld" + }, + { "name" : "Luca Ferrari", - "y" : 8, - "drilldown" : "Luca Ferrari" + "drilldown" : "Luca Ferrari", + "y" : 8 }, { + "drilldown" : "Mark Anderson", "y" : 2, - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson" + "name" : "Mark Anderson" }, { "name" : "Peter Campbell Smith", @@ -67,9 +53,9 @@ "drilldown" : "Peter Campbell Smith" }, { + "name" : "PokGoPun", "drilldown" : "PokGoPun", - "y" : 2, - "name" : "PokGoPun" + "y" : 2 }, { "drilldown" : "Robert DiCicco", @@ -77,24 +63,24 @@ "name" : "Robert DiCicco" }, { + "y" : 5, "drilldown" : "Roger Bell_West", - "name" : "Roger Bell_West", - "y" : 5 + "name" : "Roger Bell_West" }, { - "drilldown" : "Simon Green", + "name" : "Simon Green", "y" : 3, - "name" : "Simon Green" + "drilldown" : "Simon Green" }, { + "drilldown" : "Stephen G Lynn", "y" : 4, - "name" : "Stephen G Lynn", - "drilldown" : "Stephen G Lynn" + "name" : "Stephen G Lynn" }, { "y" : 4, - "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke" + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke" }, { "drilldown" : "W. Luis Mochan", @@ -102,43 +88,60 @@ "name" : "W. Luis Mochan" } ], - "name" : "The Weekly Challenge - 169" + "colorByPoint" : 1 } ], + "subtitle" : { + "text" : "[Champions: 15] Last updated at 2022-06-16 18:40:31 GMT" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, "drilldown" : { "series" : [ { - "name" : "Dario Mazzeo", "data" : [ [ "Perl", 1 ] ], - "id" : "Dario Mazzeo" + "id" : "Dario Mazzeo", + "name" : "Dario Mazzeo" }, { + "name" : "E. Choroba", "data" : [ [ "Perl", 2 ] ], - "name" : "E. Choroba", "id" : "E. Choroba" }, { + "id" : "habere-et-dispetire", "data" : [ [ "Raku", 2 ] ], - "name" : "habere-et-dispetire", - "id" : "habere-et-dispetire" + "name" : "habere-et-dispetire" }, { - "id" : "James Smith", + "name" : "James Smith", "data" : [ [ "Perl", @@ -149,33 +152,52 @@ 1 ] ], - "name" : "James Smith" + "id" : "James Smith" }, { + "id" : "Laurent Rosenfeld", "data" : [ [ + "Perl", + 2 + ], + [ "Raku", 2 ], [ "Blog", - 6 + 1 ] ], - "id" : "Luca Ferrari", - "name" : "Luca Ferrari" + "name" : "Laurent Rosenfeld" }, { + "name" : "Luca Ferrari", "data" : [ [ "Raku", 2 + ], + [ + "Blog", + 6 ] ], + "id" : "Luca Ferrari" + }, + { "id" : "Mark Anderson", + "data" : [ + [ + "Raku", + 2 + ] + ], "name" : "Mark Anderson" }, { + "id" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -186,31 +208,29 @@ 1 ] ], - "name" : "Peter Campbell Smith", - "id" : "Peter Campbell Smith" + "name" : "Peter Campbell Smith" }, { - "id" : "PokGoPun", + "name" : "PokGoPun", "data" : [ [ "Perl", 2 ] ], - "name" : "PokGoPun" + "id" : "PokGoPun" }, { - "id" : "Robert DiCicco", + "name" : "Robert DiCicco", "data" : [ [ "Raku", 1 ] ], - "name" : "Robert DiCicco" + "id" : "Robert DiCicco" }, { - "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -225,7 +245,8 @@ 1 ] ], - "id" : "Roger Bell_West" + "id" : "Roger Bell_West", + "name" : "Roger Bell_West" }, { "data" : [ @@ -242,6 +263,7 @@ "name" : "Simon Green" }, { + "name" : "Stephen G Lynn", "data" : [ [ "Perl", @@ -252,7 +274,6 @@ 2 ] ], - "name" : "Stephen G Lynn", "id" : "Stephen G Lynn" }, { @@ -270,6 +291,7 @@ "name" : "Ulrich Rieke" }, { + "id" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -280,15 +302,16 @@ 1 ] ], - "name" : "W. Luis Mochan", - "id" : "W. Luis Mochan" + "name" : "W. Luis Mochan" } ] }, - "subtitle" : { - "text" : "[Champions: 14] Last updated at 2022-06-16 18:02:19 GMT" - }, "title" : { "text" : "The Weekly Challenge - 169" + }, + "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/>" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 3a158f89cb..3aa20b7aab 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, - "chart" : { - "type" : "column" + "title" : { + "text" : "The Weekly Challenge Contributions [2019 - 2022]" }, - "xAxis" : { - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - }, - "type" : "category" + "subtitle" : { + "text" : "Last updated at 2022-06-16 18:40:31 GMT" }, "series" : [ { "data" : [ [ "Blog", - 2621 + 2622 ], [ "Perl", - 8215 + 8217 ], [ "Raku", - 4876 + 4878 ] ], "name" : "Contributions", "dataLabels" : { + "enabled" : "true", "rotation" : -90, + "format" : "{point.y:.0f}", + "align" : "right", + "y" : 10, "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" }, - "align" : "right", - "format" : "{point.y:.0f}", - "color" : "#FFFFFF", - "y" : 10, - "enabled" : "true" + "color" : "#FFFFFF" } } ], - "subtitle" : { - "text" : "Last updated at 2022-06-16 18:02:19 GMT" - }, - "title" : { - "text" : "The Weekly Challenge Contributions [2019 - 2022]" + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 }, "legend" : { "enabled" : "false" }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" + "chart" : { + "type" : "column" + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + } } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index c4be06fd81..4f327eb8bd 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,24 +1,14 @@ { - "legend" : { - "enabled" : "false" - }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } + "yAxis" : { + "title" : { + "text" : "Total Solutions" } }, + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2022-06-16 18:40:31 GMT" + }, "series" : [ { - "colorByPoint" : "true", "data" : [ { "drilldown" : "001", @@ -26,9 +16,9 @@ "name" : "#001" }, { + "drilldown" : "002", "y" : 125, - "name" : "#002", - "drilldown" : "002" + "name" : "#002" }, { "name" : "#003", @@ -36,19 +26,19 @@ "drilldown" : "003" }, { - "y" : 99, "name" : "#004", + "y" : 99, "drilldown" : "004" }, { - "drilldown" : "005", "name" : "#005", - "y" : 78 + "y" : 78, + "drilldown" : "005" }, { - "name" : "#006", "y" : 58, - "drilldown" : "006" + "drilldown" : "006", + "name" : "#006" }, { "drilldown" : "007", @@ -66,99 +56,99 @@ "drilldown" : "009" }, { - "y" : 65, "name" : "#010", + "y" : 65, "drilldown" : "010" }, { - "y" : 85, "name" : "#011", - "drilldown" : "011" + "drilldown" : "011", + "y" : 85 }, { - "drilldown" : "012", "y" : 89, + "drilldown" : "012", "name" : "#012" }, { - "drilldown" : "013", + "name" : "#013", "y" : 85, - "name" : "#013" + "drilldown" : "013" }, { + "y" : 101, "drilldown" : "014", - "name" : "#014", - "y" : 101 + "name" : "#014" }, { "drilldown" : "015", - "name" : "#015", - "y" : 99 + "y" : 99, + "name" : "#015" }, { "y" : 71, - "name" : "#016", - "drilldown" : "016" + "drilldown" : "016", + "name" : "#016" }, { + "name" : "#017", "drilldown" : "017", - "y" : 84, - "name" : "#017" + "y" : 84 }, { - "drilldown" : "018", + "name" : "#018", "y" : 81, - "name" : "#018" + "drilldown" : "018" }, { - "name" : "#019", "y" : 103, - "drilldown" : "019" + "drilldown" : "019", + "name" : "#019" }, { - "drilldown" : "020", "name" : "#020", - "y" : 101 + "y" : 101, + "drilldown" : "020" }, { - "name" : "#021", + "drilldown" : "021", "y" : 72, - "drilldown" : "021" + "name" : "#021" }, { - "y" : 68, "name" : "#022", + "y" : 68, "drilldown" : "022" }, { + "drilldown" : "023", "y" : 97, - "name" : "#023", - "drilldown" : "023" + "name" : "#023" }, { - "name" : "#024", + "drilldown" : "024", "y" : 75, - "drilldown" : "024" + "name" : "#024" }, { - "drilldown" : "025", "name" : "#025", + "drilldown" : "025", "y" : 59 }, { - "y" : 74, "name" : "#026", + "y" : 74, "drilldown" : "026" }, { - "drilldown" : "027", "y" : 62, + "drilldown" : "027", "name" : "#027" }, { - "name" : "#028", "y" : 82, - "drilldown" : "028" + "drilldown" : "028", + "name" : "#028" }, { "drilldown" : "029", @@ -167,23 +157,23 @@ }, { "drilldown" : "030", - "name" : "#030", - "y" : 119 + "y" : 119, + "name" : "#030" }, { "name" : "#031", - "y" : 91, - "drilldown" : "031" + "drilldown" : "031", + "y" : 91 }, { - "drilldown" : "032", "name" : "#032", + "drilldown" : "032", "y" : 96 }, { + "drilldown" : "033", "y" : 112, - "name" : "#033", - "drilldown" : "033" + "name" : "#033" }, { "drilldown" : "034", @@ -192,13 +182,13 @@ }, { "y" : 66, - "name" : "#035", - "drilldown" : "035" + "drilldown" : "035", + "name" : "#035" }, { - "drilldown" : "036", "name" : "#036", - "y" : 70 + "y" : 70, + "drilldown" : "036" }, { "drilldown" : "037", @@ -206,59 +196,59 @@ "name" : "#037" }, { - "drilldown" : "038", "name" : "#038", + "drilldown" : "038", "y" : 70 }, { - "drilldown" : "039", "name" : "#039", - "y" : 64 + "y" : 64, + "drilldown" : "039" }, { + "name" : "#040", "drilldown" : "040", - "y" : 75, - "name" : "#040" + "y" : 75 }, { + "drilldown" : "041", "y" : 78, - "name" : "#041", - "drilldown" : "041" + "name" : "#041" }, { - "drilldown" : "042", "y" : 94, + "drilldown" : "042", "name" : "#042" }, { - "drilldown" : "043", "name" : "#043", + "drilldown" : "043", "y" : 70 }, { - "drilldown" : "044", "y" : 87, + "drilldown" : "044", "name" : "#044" }, { - "drilldown" : "045", "y" : 98, + "drilldown" : "045", "name" : "#045" }, { + "name" : "#046", "drilldown" : "046", - "y" : 89, - "name" : "#046" + "y" : 89 }, { "name" : "#047", - "y" : 86, - "drilldown" : "047" + "drilldown" : "047", + "y" : 86 }, { "y" : 110, - "name" : "#048", - "drilldown" : "048" + "drilldown" : "048", + "name" : "#048" }, { "name" : "#049", @@ -266,13 +256,13 @@ "drilldown" : "049" }, { + "name" : "#050", "drilldown" : "050", - "y" : 100, - "name" : "#050" + "y" : 100 }, { - "drilldown" : "051", "y" : 91, + "drilldown" : "051", "name" : "#051" }, { @@ -281,14 +271,14 @@ "drilldown" : "052" }, { + "name" : "#053", "drilldown" : "053", - "y" : 103, - "name" : "#053" + "y" : 103 }, { + "name" : "#054", "drilldown" : "054", - "y" : 105, - "name" : "#054" + "y" : 105 }, { "drilldown" : "055", @@ -296,8 +286,8 @@ "name" : "#055" }, { - "drilldown" : "056", "name" : "#056", + "drilldown" : "056", "y" : 97 }, { @@ -307,43 +297,43 @@ }, { "name" : "#058", - "y" : 71, - "drilldown" : "058" + "drilldown" : "058", + "y" : 71 }, { - "drilldown" : "059", "name" : "#059", - "y" : 91 + "y" : 91, + "drilldown" : "059" }, { - "name" : "#060", + "drilldown" : "060", "y" : 87, - "drilldown" : "060" + "name" : "#060" }, { "y" : 83, - "name" : "#061", - "drilldown" : "061" + "drilldown" : "061", + "name" : "#061" }, { - "name" : "#062", + "drilldown" : "062", "y" : 60, - "drilldown" : "062" + "name" : "#062" }, { + "y" : 91, "drilldown" : "063", - "name" : "#063", - "y" : 91 + "name" : "#063" }, { + "drilldown" : "064", "y" : 82, - "name" : "#064", - "drilldown" : "064" + "name" : "#064" }, { - "drilldown" : "065", + "name" : "#065", "y" : 75, - "name" : "#065" + "drilldown" : "065" }, { "drilldown" : "066", @@ -351,144 +341,144 @@ "name" : "#066" }, { - "drilldown" : "067", + "name" : "#067", "y" : 92, - |
