aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Green <mail@simon.green>2022-04-03 21:40:08 +1000
committerSimon Green <mail@simon.green>2022-04-03 21:40:08 +1000
commit993e01103a73e4965f968a9d6bc08426ab51b6f9 (patch)
treea01b1898297b5c24ed9bc7360c2570f7a79ec4e1
parentcac254d63bca6e312efe7f414b164e6e0510d1bb (diff)
downloadperlweeklychallenge-club-993e01103a73e4965f968a9d6bc08426ab51b6f9.tar.gz
perlweeklychallenge-club-993e01103a73e4965f968a9d6bc08426ab51b6f9.tar.bz2
perlweeklychallenge-club-993e01103a73e4965f968a9d6bc08426ab51b6f9.zip
sgreen solutions to challenge 158
-rw-r--r--challenge-158/sgreen/README.md4
-rw-r--r--challenge-158/sgreen/blog.txt1
-rwxr-xr-xchallenge-158/sgreen/perl/ch-1.pl45
-rwxr-xr-xchallenge-158/sgreen/perl/ch-2.pl41
-rwxr-xr-xchallenge-158/sgreen/python/ch-1.py41
-rwxr-xr-xchallenge-158/sgreen/python/ch-2.py41
6 files changed, 171 insertions, 2 deletions
diff --git a/challenge-158/sgreen/README.md b/challenge-158/sgreen/README.md
index 57c0021858..56ff6385e4 100644
--- a/challenge-158/sgreen/README.md
+++ b/challenge-158/sgreen/README.md
@@ -1,3 +1,3 @@
-# The Weekly Challenge 157
+# The Weekly Challenge 158
-Blog: [Three means and big bases](https://dev.to/simongreennet/three-means-and-big-bases-3o2f) \ No newline at end of file
+Blog: [It's a primathon! ](https://dev.to/simongreennet/its-a-primathon-5aki) \ No newline at end of file
diff --git a/challenge-158/sgreen/blog.txt b/challenge-158/sgreen/blog.txt
new file mode 100644
index 0000000000..c779839314
--- /dev/null
+++ b/challenge-158/sgreen/blog.txt
@@ -0,0 +1 @@
+https://dev.to/simongreennet/its-a-primathon-5aki \ No newline at end of file
diff --git a/challenge-158/sgreen/perl/ch-1.pl b/challenge-158/sgreen/perl/ch-1.pl
new file mode 100755
index 0000000000..f1f287c8eb
--- /dev/null
+++ b/challenge-158/sgreen/perl/ch-1.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+use List::Util 'sum';
+
+sub is_prime {
+ my $number = shift;
+
+ # Return true or false if the number is a prime
+ return if $number < 2;
+
+ foreach my $i ( 2 .. int( sqrt($number) ) ) {
+ return if $number % $i == 0;
+ }
+
+ # It's a prime
+ return 1;
+}
+
+sub main {
+ my %primes = ();
+ my @additive_primes = ();
+
+ foreach my $x ( 1 .. 100 ) {
+
+ next if not is_prime($x);
+
+ $primes{$x} = 1;
+
+ # Get the sum of all the digits
+ my $s = sum( split //, $x );
+
+ if ( $primes{$s} ) {
+ # It's an additive prime!
+ push @additive_primes, $x;
+ }
+ }
+
+ say join ', ', @additive_primes;
+}
+
+main() \ No newline at end of file
diff --git a/challenge-158/sgreen/perl/ch-2.pl b/challenge-158/sgreen/perl/ch-2.pl
new file mode 100755
index 0000000000..d317aa96ad
--- /dev/null
+++ b/challenge-158/sgreen/perl/ch-2.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+sub is_prime {
+ my $number = shift;
+
+ # Return true or false if the number is a prime
+ return if $number < 2;
+
+ foreach my $i ( 2 .. int( sqrt($number) ) ) {
+ return if $number % $i == 0;
+ }
+
+ # It's a prime
+ return 1;
+}
+
+sub main {
+ my @cuban_primes = ();
+ my $x = 1;
+
+ while ($x) {
+ # Calculate 3x² + 3x + 1
+ my $p = 3 * $x * $x + 3 * $x + 1;
+
+ # We only care about values <= 1000
+ last if $p > 1000;
+
+ if ( is_prime($p) ) {
+ # Add to the cuban_primes list
+ push @cuban_primes, $p;
+ }
+ $x++;
+ }
+ say join ', ', @cuban_primes;
+}
+
+main() \ No newline at end of file
diff --git a/challenge-158/sgreen/python/ch-1.py b/challenge-158/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..a6ed510df2
--- /dev/null
+++ b/challenge-158/sgreen/python/ch-1.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+import math
+
+
+def is_prime(number):
+ # Return true or false if the number is a prime
+ if number < 2:
+ return False
+
+ for i in range(2, int(math.sqrt(number)) + 1):
+ if number % i == 0:
+ return False
+
+ # It's a prime
+ return True
+
+
+def main():
+ primes = set()
+ additive_primes = []
+
+ for x in range(101):
+
+ if not is_prime(x):
+ continue
+
+ primes.add(x)
+
+ # Get the sum of all the digits
+ s = sum(int(i) for i in str(x))
+
+ if s in primes:
+ # It's an additive prime!
+ additive_primes.append(x)
+
+ print(*additive_primes, sep=', ')
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-158/sgreen/python/ch-2.py b/challenge-158/sgreen/python/ch-2.py
new file mode 100755
index 0000000000..9d741e6a15
--- /dev/null
+++ b/challenge-158/sgreen/python/ch-2.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+import math
+
+
+def is_prime(number):
+ # Return true or false if the number is a prime
+ if number < 2:
+ return False
+
+ for i in range(2, int(math.sqrt(number)) + 1):
+ if number % i == 0:
+ return False
+
+ # It's a prime
+ return True
+
+
+def main():
+ cuban_primes = []
+ x = 1
+
+ while x:
+ # Calculate 3x² + 3x + 1
+ p = 3 * x * x + 3 * x + 1
+
+ if p > 1000:
+ # We only care about values <= 1000
+ break
+
+ if is_prime(p):
+ # Add to the cuban_primes list
+ cuban_primes.append(p)
+
+ x += 1
+
+ print(*cuban_primes, sep=', ')
+
+
+if __name__ == '__main__':
+ main()