aboutsummaryrefslogtreecommitdiff
path: root/challenge-147
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-147')
-rw-r--r--challenge-147/2colours/README1
-rwxr-xr-xchallenge-147/2colours/raku/ch-1.raku12
-rwxr-xr-xchallenge-147/2colours/raku/ch-2.raku18
-rw-r--r--challenge-147/adam-russell/blog.txt1
-rw-r--r--challenge-147/adam-russell/blog1.txt1
-rw-r--r--challenge-147/adam-russell/perl/ch-1.pl83
-rw-r--r--challenge-147/adam-russell/perl/ch-2.pl49
-rw-r--r--challenge-147/adam-russell/prolog/ch-1.p27
-rw-r--r--challenge-147/adam-russell/prolog/ch-2.p18
-rw-r--r--challenge-147/alexander-pankoff/perl/ch-1.pl47
-rw-r--r--challenge-147/alexander-pankoff/perl/ch-2.pl48
-rw-r--r--challenge-147/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-147/arne-sommer/perl/ch-1.pl36
-rwxr-xr-xchallenge-147/arne-sommer/perl/ch-2.pl40
-rwxr-xr-xchallenge-147/arne-sommer/perl/pentagon-numbers-loop-perl40
-rwxr-xr-xchallenge-147/arne-sommer/perl/truncatable-prime-perl36
-rwxr-xr-xchallenge-147/arne-sommer/raku/ch-1.raku20
-rwxr-xr-xchallenge-147/arne-sommer/raku/ch-2.raku31
-rwxr-xr-xchallenge-147/arne-sommer/raku/pentagon-numbers35
-rwxr-xr-xchallenge-147/arne-sommer/raku/pentagon-numbers-loop31
-rwxr-xr-xchallenge-147/arne-sommer/raku/pentagon-numbers-loop-cached40
-rwxr-xr-xchallenge-147/arne-sommer/raku/pentagon-numbers-seq16
-rwxr-xr-xchallenge-147/arne-sommer/raku/pentagon-numbers-seq-grep13
-rwxr-xr-xchallenge-147/arne-sommer/raku/truncatable-prime20
-rw-r--r--challenge-147/athanasius/perl/ch-1.pl140
-rw-r--r--challenge-147/athanasius/perl/ch-2.pl148
-rw-r--r--challenge-147/athanasius/raku/ch-1.raku127
-rw-r--r--challenge-147/athanasius/raku/ch-2.raku142
-rw-r--r--challenge-147/bruce-gray/README42
-rw-r--r--challenge-147/bruce-gray/blog.txt1
-rw-r--r--challenge-147/bruce-gray/perl/ch-1.pl44
-rw-r--r--challenge-147/bruce-gray/perl/ch-2.pl27
-rw-r--r--challenge-147/bruce-gray/raku/ch-1.raku27
-rw-r--r--challenge-147/bruce-gray/raku/ch-2.raku21
-rw-r--r--challenge-147/cheok-yin-fung/README2
-rw-r--r--challenge-147/cheok-yin-fung/awk/ch-1.awk46
-rw-r--r--challenge-147/cheok-yin-fung/bash/ch-1.sh57
-rw-r--r--challenge-147/cheok-yin-fung/blog.txt1
-rw-r--r--challenge-147/cheok-yin-fung/cpp/ch-1.cpp71
-rw-r--r--challenge-147/cheok-yin-fung/java/LeftTruncatablePrime.java79
-rw-r--r--challenge-147/cheok-yin-fung/julia/ch-1.jl67
-rw-r--r--challenge-147/cheok-yin-fung/node/ch-1.js60
-rw-r--r--challenge-147/cheok-yin-fung/perl/ch-1.pl65
-rw-r--r--challenge-147/cheok-yin-fung/smalltalk/ch-1.st70
-rwxr-xr-xchallenge-147/colin-crain/perl/ch-1.pl142
-rwxr-xr-xchallenge-147/colin-crain/perl/ch-2.pl131
-rw-r--r--challenge-147/conor-hoekstra/apl/ch-1.apl5
-rw-r--r--challenge-147/conor-hoekstra/apl/ch-2.apl6
-rw-r--r--challenge-147/duncan-c-white/README56
-rw-r--r--challenge-147/duncan-c-white/perl/MakePrimes.pm97
-rwxr-xr-xchallenge-147/duncan-c-white/perl/ch-1.pl81
-rwxr-xr-xchallenge-147/duncan-c-white/perl/ch-2.pl72
-rwxr-xr-xchallenge-147/e-choroba/perl/ch-1.pl58
-rwxr-xr-xchallenge-147/e-choroba/perl/ch-2.pl32
-rw-r--r--challenge-147/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/perl/ch-1.pl43
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/perl/ch-2.pl43
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/raku/ch-1.raku23
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/raku/ch-2.raku22
-rw-r--r--challenge-147/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-147/laurent-rosenfeld/perl/ch-1.pl35
-rw-r--r--challenge-147/laurent-rosenfeld/perl/ch-2.pl20
-rw-r--r--challenge-147/laurent-rosenfeld/raku/ch-1.raku17
-rw-r--r--challenge-147/laurent-rosenfeld/raku/ch-2.raku12
-rw-r--r--challenge-147/laurent-rosenfeld/ring/ch-1.ring43
-rw-r--r--challenge-147/laurent-rosenfeld/ring/ch-2.ring21
-rw-r--r--challenge-147/mark-senn/blog.txt1
-rw-r--r--challenge-147/mark-senn/blog1.txt1
-rw-r--r--challenge-147/mark-senn/raku/ch-1.raku17
-rw-r--r--challenge-147/mark-senn/raku/ch-2.raku39
-rwxr-xr-xchallenge-147/mattneleigh/perl/ch-1.pl164
-rwxr-xr-xchallenge-147/mattneleigh/perl/ch-2.pl112
-rw-r--r--challenge-147/mohammad-anwar/java/theweeklychallenge/TruncatablePrime.java90
-rw-r--r--challenge-147/mohammad-anwar/python/ch-1.py75
-rw-r--r--challenge-147/mohammad-anwar/swift/ch-1.swift111
-rwxr-xr-xchallenge-147/pete-houston/perl/ch-1.pl44
-rwxr-xr-xchallenge-147/pete-houston/perl/ch-2.pl54
-rw-r--r--challenge-147/polettix/blog.txt1
-rw-r--r--challenge-147/polettix/blog1.txt1
-rw-r--r--challenge-147/polettix/perl/ch-1.pl40
-rw-r--r--challenge-147/polettix/perl/ch-2.pl74
-rw-r--r--challenge-147/polettix/raku/ch-1.raku54
-rw-r--r--challenge-147/polettix/raku/ch-2.raku51
-rw-r--r--challenge-147/sgreen/README.md4
-rw-r--r--challenge-147/sgreen/blog.txt1
-rwxr-xr-xchallenge-147/sgreen/perl/ch-1.pl54
-rwxr-xr-xchallenge-147/sgreen/perl/ch-2.pl38
-rwxr-xr-xchallenge-147/sgreen/python/ch-1.py50
-rwxr-xr-xchallenge-147/sgreen/python/ch-2.py32
-rwxr-xr-xchallenge-147/steven-wilson/javascript/ch-2.js38
-rw-r--r--challenge-147/steven-wilson/perl/ch-1.pl39
-rw-r--r--challenge-147/steven-wilson/perl/ch-2.pl41
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/README.md27
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/bb.edn10
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/build.clj19
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/deps.edn8
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/src/c147/t1.clj29
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/src/c147/t2.clj34
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/test/c147/t1_test.clj11
-rw-r--r--challenge-147/tyler-wardhaugh/clojure/test/c147/t2_test.clj7
-rw-r--r--challenge-147/ulrich-rieke/perl/ch-1.pl49
-rw-r--r--challenge-147/ulrich-rieke/perl/ch-2.pl15
-rw-r--r--challenge-147/ulrich-rieke/raku/ch-2.raku34
-rw-r--r--challenge-147/wambash/raku/ch-1.raku26
-rwxr-xr-xchallenge-147/wlmb/perl/ch-1.pl2
-rwxr-xr-xchallenge-147/wlmb/perl/ch-2.pl7
-rwxr-xr-xchallenge-147/wlmb/perl/ch-2a.pl3
-rwxr-xr-xchallenge-147/wlmb/perl/ch-2b.pl1
108 files changed, 4272 insertions, 98 deletions
diff --git a/challenge-147/2colours/README b/challenge-147/2colours/README
new file mode 100644
index 0000000000..6894fbec08
--- /dev/null
+++ b/challenge-147/2colours/README
@@ -0,0 +1 @@
+Solution By Márton Polgár.
diff --git a/challenge-147/2colours/raku/ch-1.raku b/challenge-147/2colours/raku/ch-1.raku
new file mode 100755
index 0000000000..5757fef8da
--- /dev/null
+++ b/challenge-147/2colours/raku/ch-1.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+
+use experimental :cached;
+
+multi ltprimes(0, $) { ('') }
+multi ltprimes($digits, $base) is cached {
+ (1..^$base).map(*.base: $base) X~ ltprimes($digits-1, $base)
+ andthen .grep(&is-prime)>>.Int
+}
+
+
+(1..*).map(*.&ltprimes(10).Slip).head(20).say;
diff --git a/challenge-147/2colours/raku/ch-2.raku b/challenge-147/2colours/raku/ch-2.raku
new file mode 100755
index 0000000000..ca0dd53bd4
--- /dev/null
+++ b/challenge-147/2colours/raku/ch-2.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/env raku
+
+sub is-pentagon($c) { (1+sqrt(1+24*$c))%%6 }
+
+sub P($n) { $n*(3*$n-1) div 2 #`(make rationals faster, pretty please) }
+
+OUTSIDE:
+for 1..Inf -> $bigger {
+ for 1..^$bigger -> $smaller {
+ my $bigger-p = P($bigger);
+ my $smaller-p = P($smaller);
+ #my ($bigger-p, $smaller-p) = (P($bigger), P($smaller)); eliminate the runtime overhead of this destructuring, pretty please
+ if is-pentagon($bigger-p + $smaller-p) && is-pentagon($bigger-p - $smaller-p) {
+ say "P($bigger)=$bigger-p and P($smaller)=$smaller-p";
+ last OUTSIDE;
+ }
+ }
+}
diff --git a/challenge-147/adam-russell/blog.txt b/challenge-147/adam-russell/blog.txt
new file mode 100644
index 0000000000..6ba83d955a
--- /dev/null
+++ b/challenge-147/adam-russell/blog.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2022/01/16
diff --git a/challenge-147/adam-russell/blog1.txt b/challenge-147/adam-russell/blog1.txt
new file mode 100644
index 0000000000..7b1bb684d3
--- /dev/null
+++ b/challenge-147/adam-russell/blog1.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2022/01/16
diff --git a/challenge-147/adam-russell/perl/ch-1.pl b/challenge-147/adam-russell/perl/ch-1.pl
new file mode 100644
index 0000000000..3940e53d2e
--- /dev/null
+++ b/challenge-147/adam-russell/perl/ch-1.pl
@@ -0,0 +1,83 @@
+use strict;
+use warnings;
+##
+# Write a script to generate first 20 left-truncatable prime numbers in base 10.
+##
+use boolean;
+use constant N => 10_000;
+
+sub sieve_atkin{
+ my($n) = @_;
+ my @primes = (2, 3, 5);
+ my $upper_bound = int($n * log($n) + $n * log(log($n)));
+ my @atkin = (false) x $upper_bound;
+ my @sieve = (1, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 49, 53, 59);
+ for my $x (1 .. sqrt($upper_bound)){
+ for(my $y = 1; $y <= sqrt($upper_bound); $y+=2){
+ my $m = (4 * $x ** 2) + ($y ** 2);
+ my @remainders;
+ @remainders = grep {$m % 60 == $_} (1, 13, 17, 29, 37, 41, 49, 53) if $m <= $upper_bound;
+ $atkin[$m] = !$atkin[$m] if @remainders;
+ }
+ }
+ for(my $x = 1; $x <= sqrt($upper_bound); $x += 2){
+ for(my $y = 2; $y <= sqrt($upper_bound); $y += 2){
+ my $m = (3 * $x ** 2) + ($y ** 2);
+ my @remainders;
+ @remainders = grep {$m % 60 == $_} (7, 19, 31, 43) if $m <= $upper_bound;
+ $atkin[$m] = !$atkin[$m] if @remainders;
+ }
+ }
+ for(my $x = 2; $x <= sqrt($upper_bound); $x++){
+ for(my $y = $x - 1; $y >= 1; $y -= 2){
+ my $m = (3 * $x ** 2) - ($y ** 2);
+ my @remainders;
+ @remainders = grep {$m % 60 == $_} (11, 23, 47, 59) if $m <= $upper_bound;
+ $atkin[$m] = !$atkin[$m] if @remainders;
+ }
+ }
+ my @m;
+ for my $w (0 .. ($upper_bound / 60)){
+ for my $s (@sieve){
+ push @m, 60 * $w + $s;
+ }
+ }
+ for my $m (@m){
+ last if $upper_bound < ($m ** 2);
+ my $mm = $m ** 2;
+ if($atkin[$m]){
+ for my $m2 (@m){
+ my $c = $mm * $m2;
+ last if $c > $upper_bound;
+ $atkin[$c] = false;
+ }
+ }
+ }
+ map{ push @primes, $_ if $atkin[$_] } 0 .. @atkin - 1;
+ return @primes;
+}
+
+sub truncatable{
+ my($prime, $primes) = @_;
+ return false if $prime =~ m/0/;
+ my @truncatable = map { my $p = substr($prime, -1 * $_, $_); grep {$p == $_} @{$primes}} 1 .. length($prime);
+ return @truncatable == length($prime);
+}
+
+sub first_n_truncatable_primes{
+ my($n) = @_;
+ my @primes = sieve_atkin(N);
+ my @truncatable;
+ for my $prime (@primes){
+ push @truncatable, $prime if truncatable($prime, \@primes);
+ last if @truncatable == $n;
+ }
+ return @truncatable;
+}
+
+
+
+MAIN:{
+ print join(", ", first_n_truncatable_primes(20)) . "\n";
+
+} \ No newline at end of file
diff --git a/challenge-147/adam-russell/perl/ch-2.pl b/challenge-147/adam-russell/perl/ch-2.pl
new file mode 100644
index 0000000000..0126f4a084
--- /dev/null
+++ b/challenge-147/adam-russell/perl/ch-2.pl
@@ -0,0 +1,49 @@
+use strict;
+use warnings;
+##
+# Write a sript to find the first pair of Pentagon Numbers
+# whose sum and difference are also a Pentagon Number.
+##
+use constant N => 10_000;
+
+sub n_pentagon_numbers{
+ my($n) = @_;
+ my @pentagon_numbers;
+ my $x = 1;
+ my %h;
+ do{
+ my $pentagon = $x * (3 * $x - 1) / 2;
+ push @pentagon_numbers, $pentagon;