aboutsummaryrefslogtreecommitdiff
path: root/challenge-168
diff options
context:
space:
mode:
authorLuis Mochan <mochan@fis.unam.mx>2022-06-06 22:18:06 -0500
committerLuis Mochan <mochan@fis.unam.mx>2022-06-06 22:18:06 -0500
commit3e7758eddef30dcc9b7f1ef8912979cd40baa39e (patch)
tree4b56771d2d5901a537e71642f3c92dc8234bd9d5 /challenge-168
parentad6edd6a47450455cf81a94854ce74eabee2501a (diff)
downloadperlweeklychallenge-club-3e7758eddef30dcc9b7f1ef8912979cd40baa39e.tar.gz
perlweeklychallenge-club-3e7758eddef30dcc9b7f1ef8912979cd40baa39e.tar.bz2
perlweeklychallenge-club-3e7758eddef30dcc9b7f1ef8912979cd40baa39e.zip
Solve PWC168
Diffstat (limited to 'challenge-168')
-rw-r--r--challenge-168/wlmb/blog.txt1
-rwxr-xr-xchallenge-168/wlmb/perl/ch-1.pl20
-rwxr-xr-xchallenge-168/wlmb/perl/ch-2.pl15
3 files changed, 36 insertions, 0 deletions
diff --git a/challenge-168/wlmb/blog.txt b/challenge-168/wlmb/blog.txt
new file mode 100644
index 0000000000..45d0e3b2e8
--- /dev/null
+++ b/challenge-168/wlmb/blog.txt
@@ -0,0 +1 @@
+https://wlmb.github.io/2022/06/06/PWC168/
diff --git a/challenge-168/wlmb/perl/ch-1.pl b/challenge-168/wlmb/perl/ch-1.pl
new file mode 100755
index 0000000000..95ca7f1afa
--- /dev/null
+++ b/challenge-168/wlmb/perl/ch-1.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 168
+# Task 1: Perrin prime
+#
+# See https://wlmb.github.io/2022/06/06/PWC168/#task-1-perrin-prime
+use v5.12;
+use warnings;
+use bigint;
+use Math::Prime::Util qw(is_prime);
+die "Usage: $0 N\n to write the first N Perrin Primes" unless @ARGV;
+my $N=shift;
+my @last_perrins=(3,0,2);
+my @perrin_primes;
+my %seen;
+while(@perrin_primes<$N){
+ push @last_perrins, my $perrin=$last_perrins[-3]+$last_perrins[-2];
+ shift @last_perrins; # no need to keep old Perrins
+ $seen{$perrin}=1, push @perrin_primes, $perrin if is_prime($perrin) and !$seen{$perrin};
+}
+say join " ", sort {$a<=>$b} @perrin_primes;
diff --git a/challenge-168/wlmb/perl/ch-2.pl b/challenge-168/wlmb/perl/ch-2.pl
new file mode 100755
index 0000000000..d30dc2ba47
--- /dev/null
+++ b/challenge-168/wlmb/perl/ch-2.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 168
+# Task 2: Home prime
+#
+# See https://wlmb.github.io/2022/06/06/PWC168/#task-1-perrin-prime
+use v5.12;
+use warnings;
+use Math::Prime::Util qw(is_prime factor);
+die "Usage: $0 n1 [n2... ]\n to obtain the home primes of n1..." unless @ARGV;
+for(@ARGV){
+ say("The argument ($_) should have been >=2"), next unless $_>=2;
+ my $N=$_;
+ $N=join "", factor($N) while(!is_prime($N));
+ say "HP$_=$N"
+}