aboutsummaryrefslogtreecommitdiff
path: root/challenge-168
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-06-13 03:19:31 +0100
committerGitHub <noreply@github.com>2022-06-13 03:19:31 +0100
commit2f30fff6358903bd67f2902971ee8eb42944aa45 (patch)
tree5a946eb990e134ca4a1fda3b4288789384006358 /challenge-168
parent0102bbbdec9b638d474a1967c0bfd6cd675ea85d (diff)
parent3fdef0a6c00bff73c93c31619e13b56c5f8ab8ab (diff)
downloadperlweeklychallenge-club-2f30fff6358903bd67f2902971ee8eb42944aa45.tar.gz
perlweeklychallenge-club-2f30fff6358903bd67f2902971ee8eb42944aa45.tar.bz2
perlweeklychallenge-club-2f30fff6358903bd67f2902971ee8eb42944aa45.zip
Merge pull request #6255 from jaldhar/challenge-168
Challenge 168 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-168')
-rw-r--r--challenge-168/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-168/jaldhar-h-vyas/perl/ch-1.pl37
-rwxr-xr-xchallenge-168/jaldhar-h-vyas/perl/ch-2.pl60
-rwxr-xr-xchallenge-168/jaldhar-h-vyas/raku/ch-1.sh3
-rwxr-xr-xchallenge-168/jaldhar-h-vyas/raku/ch-2.raku36
5 files changed, 137 insertions, 0 deletions
diff --git a/challenge-168/jaldhar-h-vyas/blog.txt b/challenge-168/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..aedc70d6aa
--- /dev/null
+++ b/challenge-168/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2022/06/perl_weekly_challenge_week_168.html \ No newline at end of file
diff --git a/challenge-168/jaldhar-h-vyas/perl/ch-1.pl b/challenge-168/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..55df909711
--- /dev/null
+++ b/challenge-168/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,37 @@
+#!/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;
+}
+
+my @perrins = (3, 0, 2);
+my $i = 2;
+my @perrinPrimes;
+
+while (scalar @perrinPrimes < 13) {
+ if (isPrime($perrins[2]) && ! grep { $_ == $perrins[2] } @perrinPrimes) {
+ push @perrinPrimes, $perrins[2];
+ }
+ push @perrins, $perrins[0] + $perrins[1];
+ shift @perrins;
+}
+
+say join q{, }, sort {$a <=> $b} @perrinPrimes;
diff --git a/challenge-168/jaldhar-h-vyas/perl/ch-2.pl b/challenge-168/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..bc4f40c199
--- /dev/null
+++ b/challenge-168/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,60 @@
+#!/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 factorize {
+ my ($n) = @_;
+ my @primeFactors;
+
+ while ($n % 2 == 0) {
+ push @primeFactors, 2;
+ $n /= 2;
+ }
+
+ for (my $i = 3; $i <= sqrt $n; $i += 2) {
+ while ($n % $i == 0) {
+ push @primeFactors, $i;
+ $n /= $i;
+ }
+ }
+
+ if ($n > 2) {
+ push @primeFactors, $n;
+ }
+
+ return @primeFactors;
+}
+
+my $n = shift;
+
+unless (defined $n && $n > 1) {
+ die "Need an integer greater than 1.\n";
+}
+
+my $hp = $n;
+until (isPrime($hp)) {
+ my @factors = factorize($hp);
+ $hp = int join q{}, @factors;
+}
+
+say $hp;
diff --git a/challenge-168/jaldhar-h-vyas/raku/ch-1.sh b/challenge-168/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..82fc545539
--- /dev/null
+++ b/challenge-168/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '(3,0,2, -> $i, $j, $ { $i + $j} ... ∞).grep({ .is-prime }).unique[^13].sort.join(q{, }).say'
diff --git a/challenge-168/jaldhar-h-vyas/raku/ch-2.raku b/challenge-168/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..c099d83c78
--- /dev/null
+++ b/challenge-168/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,36 @@
+#!/usr/bin/raku
+
+sub factorize(Int $N) {
+ my $n = $N;
+ my @primeFactors;
+
+ while $n %% 2 {
+ @primeFactors.push(2);
+ $n /= 2;;
+ }
+
+ loop (my $i = 3; $i <= $n.sqrt; $i += 2) {
+ while ($n %% $i) {
+ @primeFactors.push($i);
+ $n /= $i;
+ }
+ }
+
+ if $n > 2 {
+ @primeFactors.push($n);
+ }
+
+ return @primeFactors;
+}
+
+sub MAIN(
+ Int $n where { $n > 1 } #= a positive integer greater than 1
+) {
+ my $hp = $n;
+ until $hp.is-prime {
+ my @factors = factorize($hp);
+ $hp = @factors.join(q{}).Int;
+ }
+
+ say $hp;
+}