aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-04-04 00:06:19 +0100
committerGitHub <noreply@github.com>2022-04-04 00:06:19 +0100
commitde8c92dcde9cc8ca8f32acdeed7ccbf53b156974 (patch)
treeca8f18ed330af1fc325a9d1e6d538e4bde5daa15
parent1320bacdc0d539b3786bb5181b6dc6d341aaf6ba (diff)
parent1038d3c92c143b29f05dd866858437e00b89ac12 (diff)
downloadperlweeklychallenge-club-de8c92dcde9cc8ca8f32acdeed7ccbf53b156974.tar.gz
perlweeklychallenge-club-de8c92dcde9cc8ca8f32acdeed7ccbf53b156974.tar.bz2
perlweeklychallenge-club-de8c92dcde9cc8ca8f32acdeed7ccbf53b156974.zip
Merge pull request #5878 from Util/branch-for-challenge-158
Add TWC 158 solutions by Bruce Gray : Raku, Perl, Go.
-rw-r--r--challenge-158/bruce-gray/go/ch-1.go30
-rw-r--r--challenge-158/bruce-gray/go/ch-2.go27
-rwxr-xr-xchallenge-158/bruce-gray/perl/ch-1.pl5
-rw-r--r--challenge-158/bruce-gray/perl/ch-1.sh1
-rwxr-xr-xchallenge-158/bruce-gray/perl/ch-2.pl11
-rw-r--r--challenge-158/bruce-gray/perl/ch-2.sh1
-rw-r--r--challenge-158/bruce-gray/raku/ch-1.raku5
-rw-r--r--challenge-158/bruce-gray/raku/ch-1.sh1
-rw-r--r--challenge-158/bruce-gray/raku/ch-2.raku7
-rw-r--r--challenge-158/bruce-gray/raku/ch-2.sh1
10 files changed, 89 insertions, 0 deletions
diff --git a/challenge-158/bruce-gray/go/ch-1.go b/challenge-158/bruce-gray/go/ch-1.go
new file mode 100644
index 0000000000..62d3c483a6
--- /dev/null
+++ b/challenge-158/bruce-gray/go/ch-1.go
@@ -0,0 +1,30 @@
+package main
+
+import "fmt"
+import "math/big"
+
+func isPrime(n int) bool {
+ return big.NewInt(int64(n)).ProbablyPrime(0)
+}
+func sumDigits(n int) int {
+ sum := 0
+ for n > 0 {
+ mod := n % 10
+ sum += mod
+ n -= mod
+ n /= 10
+ }
+ return sum
+}
+func additivePrimes(maxPrime int) []int {
+ var r []int
+ for i := 2; i <= maxPrime; i += 1 {
+ if isPrime(i) && isPrime(sumDigits(i)) {
+ r = append(r, i)
+ }
+ }
+ return r
+}
+func main() {
+ fmt.Println(additivePrimes(100))
+}
diff --git a/challenge-158/bruce-gray/go/ch-2.go b/challenge-158/bruce-gray/go/ch-2.go
new file mode 100644
index 0000000000..52a211677c
--- /dev/null
+++ b/challenge-158/bruce-gray/go/ch-2.go
@@ -0,0 +1,27 @@
+package main
+
+import "fmt"
+import "math/big"
+
+func isPrime(n int) bool {
+ return big.NewInt(int64(n)).ProbablyPrime(0)
+}
+func cube(n int) int {
+ return n * n * n
+}
+func cubanPrimes(limit int) []int {
+ var r []int
+ for i := 0; ; i += 1 {
+ cubeDiff := cube(i+1) - cube(i)
+ if isPrime(cubeDiff) {
+ r = append(r, cubeDiff)
+ }
+ if cubeDiff > limit {
+ break
+ }
+ }
+ return r
+}
+func main() {
+ fmt.Println(cubanPrimes(1000))
+}
diff --git a/challenge-158/bruce-gray/perl/ch-1.pl b/challenge-158/bruce-gray/perl/ch-1.pl
new file mode 100755
index 0000000000..85cad9249c
--- /dev/null
+++ b/challenge-158/bruce-gray/perl/ch-1.pl
@@ -0,0 +1,5 @@
+use Modern::Perl;
+use ntheory qw<is_prime sumdigits primes>;
+my @r = grep { is_prime sumdigits $_ } @{ primes(100) };
+
+say join ', ', @r;
diff --git a/challenge-158/bruce-gray/perl/ch-1.sh b/challenge-158/bruce-gray/perl/ch-1.sh
new file mode 100644
index 0000000000..62ec0bf452
--- /dev/null
+++ b/challenge-158/bruce-gray/perl/ch-1.sh
@@ -0,0 +1 @@
+perl -Mntheory=:all -wE 'say join ", ", grep { is_prime sumdigits $_ } primes(100)->@*'
diff --git a/challenge-158/bruce-gray/perl/ch-2.pl b/challenge-158/bruce-gray/perl/ch-2.pl
new file mode 100755
index 0000000000..a5ae919857
--- /dev/null
+++ b/challenge-158/bruce-gray/perl/ch-2.pl
@@ -0,0 +1,11 @@
+use Modern::Perl;
+use ntheory qw<is_prime>;
+
+my @cuban_primes;
+my $cuban = 0;
+for ( my $i = 0 ; $cuban <= 1000 ; $i++ ) {
+ $cuban = ($i + 1)**3 - $i**3;
+
+ push @cuban_primes, $cuban if is_prime $cuban;
+}
+say join ', ', @cuban_primes;
diff --git a/challenge-158/bruce-gray/perl/ch-2.sh b/challenge-158/bruce-gray/perl/ch-2.sh
new file mode 100644
index 0000000000..3618bbe581
--- /dev/null
+++ b/challenge-158/bruce-gray/perl/ch-2.sh
@@ -0,0 +1 @@
+perl -Mntheory=:all -wE 'say join ", ", grep { is_prime $_ } map { ($_ + 1)**3 - $_**3 } 0..20'
diff --git a/challenge-158/bruce-gray/raku/ch-1.raku b/challenge-158/bruce-gray/raku/ch-1.raku
new file mode 100644
index 0000000000..d18c663c40
--- /dev/null
+++ b/challenge-158/bruce-gray/raku/ch-1.raku
@@ -0,0 +1,5 @@
+sub up-thru ( @a, $n ) { gather for @a { $_ <= $n ?? .take !! last } }
+
+constant @additive_primes = grep { .is-prime and .comb.sum.is-prime }, ^Inf;
+
+say @additive_primes.&up-thru(100).join: ', ';
diff --git a/challenge-158/bruce-gray/raku/ch-1.sh b/challenge-158/bruce-gray/raku/ch-1.sh
new file mode 100644
index 0000000000..489d47831d
--- /dev/null
+++ b/challenge-158/bruce-gray/raku/ch-1.sh
@@ -0,0 +1 @@
+raku -e 'say join ", ", grep { .is-prime and .comb.sum.is-prime }, 2..100;'
diff --git a/challenge-158/bruce-gray/raku/ch-2.raku b/challenge-158/bruce-gray/raku/ch-2.raku
new file mode 100644
index 0000000000..9b062aebf1
--- /dev/null
+++ b/challenge-158/bruce-gray/raku/ch-2.raku
@@ -0,0 +1,7 @@
+sub up-thru ( @a, $n ) { gather for @a { $_ <= $n ?? .take !! last } }
+
+constant @cubes = ^Inf X** 3;
+constant @cubans = @cubes.skip Z- @cubes;
+constant @cubans_primes = @cubans.grep: &is-prime;
+
+put @cubans_primes.&up-thru(1000).join: ', ';
diff --git a/challenge-158/bruce-gray/raku/ch-2.sh b/challenge-158/bruce-gray/raku/ch-2.sh
new file mode 100644
index 0000000000..41c76bb70e
--- /dev/null
+++ b/challenge-158/bruce-gray/raku/ch-2.sh
@@ -0,0 +1 @@
+raku -e 'say (^19 X** 3).rotor(2 => -1).map({.[1] - .[0]}).grep(&is-prime).join: ", "'