diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-06-11 23:34:50 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-06-11 23:34:50 +0100 |
| commit | 7860753cd854ea07a29511477a5e4a3dca5a885e (patch) | |
| tree | c31d3bf9aef7b707e166316306a3c2da6b653bef /challenge-168 | |
| parent | 7653d51c46b23d933574ae679832ea412be9df43 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-168/laurent-rosenfeld/perl/ch-1.pl | 33 | ||||
| -rw-r--r-- | challenge-168/laurent-rosenfeld/raku/ch-1.raku | 1 |
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; |
