aboutsummaryrefslogtreecommitdiff
path: root/challenge-168
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-06-11 23:34:50 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-06-11 23:34:50 +0100
commit7860753cd854ea07a29511477a5e4a3dca5a885e (patch)
treec31d3bf9aef7b707e166316306a3c2da6b653bef /challenge-168
parent7653d51c46b23d933574ae679832ea412be9df43 (diff)
downloadperlweeklychallenge-club-7860753cd854ea07a29511477a5e4a3dca5a885e.tar.gz
perlweeklychallenge-club-7860753cd854ea07a29511477a5e4a3dca5a885e.tar.bz2
perlweeklychallenge-club-7860753cd854ea07a29511477a5e4a3dca5a885e.zip
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-168')
-rw-r--r--challenge-168/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-168/laurent-rosenfeld/perl/ch-1.pl33
-rw-r--r--challenge-168/laurent-rosenfeld/raku/ch-1.raku1
3 files changed, 35 insertions, 0 deletions
diff --git a/challenge-168/laurent-rosenfeld/blog.txt b/challenge-168/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..388761ba75
--- /dev/null
+++ b/challenge-168/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+http://blogs.perl.org/users/laurent_r/2022/06/perl-weekly-challenge-168-perrin-primes.html
diff --git a/challenge-168/laurent-rosenfeld/perl/ch-1.pl b/challenge-168/laurent-rosenfeld/perl/ch-1.pl
new file mode 100644
index 0000000000..906b341080
--- /dev/null
+++ b/challenge-168/laurent-rosenfeld/perl/ch-1.pl
@@ -0,0 +1,33 @@
+use strict;
+use warnings;
+use feature "say";
+
+my @perrin = (3, 0, 2);
+my @result = (2, 3);
+my %seen = map { $_ => 1 } @result;
+while (1) {
+ my $new_item = $perrin[-3] + $perrin[-2];
+ push @perrin, $new_item;
+ if (is_prime($new_item)) {
+ push @result, $new_item unless $seen{$new_item};
+ $seen{$new_item} = 1;
+ last if @result > 12;
+ }
+}
+say join " ", sort { $a <=> $b } @result;
+
+sub is_prime {
+ my $n = shift;
+ return 1 if $n == 2;
+ return 0 if $n % 2 == 0;
+ return 0 if $n == 1;
+
+ my $p = 3;
+ my $sqrt = sqrt $n;
+ while ($p <= $sqrt) {
+ # return 1 if $p >= $n;
+ return 0 if $n % $p == 0;
+ $p += 2;
+ }
+ return 1;
+}
diff --git a/challenge-168/laurent-rosenfeld/raku/ch-1.raku b/challenge-168/laurent-rosenfeld/raku/ch-1.raku
new file mode 100644
index 0000000000..f00ae2d3ef
--- /dev/null
+++ b/challenge-168/laurent-rosenfeld/raku/ch-1.raku
@@ -0,0 +1 @@
+say (unique grep {.is-prime}, (3, 0, 2, -> $a, $b, $c { $a + $b } ... ∞))[0..12].sort;