diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-04-04 00:06:19 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-04 00:06:19 +0100 |
| commit | de8c92dcde9cc8ca8f32acdeed7ccbf53b156974 (patch) | |
| tree | ca8f18ed330af1fc325a9d1e6d538e4bde5daa15 | |
| parent | 1320bacdc0d539b3786bb5181b6dc6d341aaf6ba (diff) | |
| parent | 1038d3c92c143b29f05dd866858437e00b89ac12 (diff) | |
| download | perlweeklychallenge-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.go | 30 | ||||
| -rw-r--r-- | challenge-158/bruce-gray/go/ch-2.go | 27 | ||||
| -rwxr-xr-x | challenge-158/bruce-gray/perl/ch-1.pl | 5 | ||||
| -rw-r--r-- | challenge-158/bruce-gray/perl/ch-1.sh | 1 | ||||
| -rwxr-xr-x | challenge-158/bruce-gray/perl/ch-2.pl | 11 | ||||
| -rw-r--r-- | challenge-158/bruce-gray/perl/ch-2.sh | 1 | ||||
| -rw-r--r-- | challenge-158/bruce-gray/raku/ch-1.raku | 5 | ||||
| -rw-r--r-- | challenge-158/bruce-gray/raku/ch-1.sh | 1 | ||||
| -rw-r--r-- | challenge-158/bruce-gray/raku/ch-2.raku | 7 | ||||
| -rw-r--r-- | challenge-158/bruce-gray/raku/ch-2.sh | 1 |
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: ", "' |
