aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2022-03-13 20:11:55 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2022-03-13 20:11:55 -0400
commit65b524906ffd18f8dbc0cd482881b4d30d24fefd (patch)
tree27ed290ef1b3da1fad2198ee3ae74b478f84ec1b
parent2910bcab162c1ede89cabb67cd770e4f820e4ec2 (diff)
downloadperlweeklychallenge-club-65b524906ffd18f8dbc0cd482881b4d30d24fefd.tar.gz
perlweeklychallenge-club-65b524906ffd18f8dbc0cd482881b4d30d24fefd.tar.bz2
perlweeklychallenge-club-65b524906ffd18f8dbc0cd482881b4d30d24fefd.zip
Challenge 155 by Jaldhar H. Vyas.
-rw-r--r--challenge-155/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-155/jaldhar-h-vyas/perl/ch-1.pl58
-rwxr-xr-xchallenge-155/jaldhar-h-vyas/perl/ch-2.pl31
-rwxr-xr-xchallenge-155/jaldhar-h-vyas/raku/ch-1.raku18
-rwxr-xr-xchallenge-155/jaldhar-h-vyas/raku/ch-2.raku18
5 files changed, 126 insertions, 0 deletions
diff --git a/challenge-155/jaldhar-h-vyas/blog.txt b/challenge-155/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..ae1fd570c7
--- /dev/null
+++ b/challenge-155/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2022/03/perl_weekly_challenge_week_155.html \ No newline at end of file
diff --git a/challenge-155/jaldhar-h-vyas/perl/ch-1.pl b/challenge-155/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..ff2f2b3a44
--- /dev/null
+++ b/challenge-155/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub isPrime {
+ my ($n) = @_;
+
+ if ($n < 2) {
+ return undef;
+ }
+
+ if ($n == 2) {
+ return 1;
+ }
+
+ for my $i (2 .. sqrt($n)) {
+ if ($n % $i == 0) {
+ return undef;
+ }
+ }
+
+ return 1;
+}
+
+sub nextPrime {
+ state $i = 1;
+ if (scalar @_) {
+ $i = shift;
+ }
+
+ while ($i++) {
+ if (isPrime($i)) {
+ return $i;
+ }
+ }
+}
+
+my @fortunates;
+
+my $i = 0;
+while (scalar @fortunates < 8) {
+ my $pn = nextPrime(1);
+
+ for my $j (1 .. $i++) {
+ $pn *= nextPrime();
+ }
+
+ my $m = $pn + 1;
+
+ while($m++) {
+ if (isPrime($m) && !grep { $_ == $m - $pn } @fortunates) {
+ push @fortunates, $m - $pn;
+ last;
+ }
+ }
+}
+
+say join q{, }, sort {$a <=> $b} @fortunates;
diff --git a/challenge-155/jaldhar-h-vyas/perl/ch-2.pl b/challenge-155/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..4bfad94e48
--- /dev/null
+++ b/challenge-155/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+no warnings 'experimental';
+use Memoize;
+
+sub fibonacci {
+ my ($n) = @_;
+
+ if ($n <= 1) {
+ return $n;
+ }
+ return fibonacci($n - 1) + fibonacci($n - 2);
+}
+
+sub pisano {
+ my ($n) = @_;
+ my $i = 2;
+
+ while (1) {
+ my @moduli = map { fibonacci($_) % $n; } 0 .. $i -1;
+
+ if (@moduli[0 .. $i / 2 - 1] ~~ @moduli[$i / 2 .. $#moduli]) {
+ return $i / 2;
+ }
+ $i += 2;
+ }
+}
+
+memoize('fibonacci');
+say pisano(3);
diff --git a/challenge-155/jaldhar-h-vyas/raku/ch-1.raku b/challenge-155/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..30c11cffa4
--- /dev/null
+++ b/challenge-155/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/raku
+
+sub MAIN() {
+ my @fortunates;
+
+ my $i = 0;
+ while @fortunates.elems < 8 {
+ my $pn = [*] (2 ... ∞).grep({ .is-prime; })[0 .. $i++];
+ for $pn + 2 .. ∞ -> $m {
+ if ($m.is-prime && $m - $pn ∉ @fortunates) {
+ @fortunates.push($m - $pn);
+ last;
+ }
+ }
+ }
+
+ @fortunates.sort.join(q{, }).say;
+} \ No newline at end of file
diff --git a/challenge-155/jaldhar-h-vyas/raku/ch-2.raku b/challenge-155/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..830fcbe9ff
--- /dev/null
+++ b/challenge-155/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/raku
+
+sub π($n) {
+ my @fibs = 0, 1, -> $a, $b { $a + $b} ... ∞;
+
+ my $i = 2;
+ loop {
+ my @moduli = @fibs[0 ..^ $i].map({ $_ mod $n; });
+ if (@moduli[0 ..^ $i / 2] Z== @moduli[$i / 2 .. *]).all {
+ return $i / 2;
+ }
+ $i += 2;
+ }
+}
+
+sub MAIN() {
+ say π(3);
+} \ No newline at end of file