aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-041/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-041/jaldhar-h-vyas/perl/ch-1.pl67
-rwxr-xr-xchallenge-041/jaldhar-h-vyas/perl/ch-2.pl21
-rwxr-xr-xchallenge-041/jaldhar-h-vyas/raku/ch-1.p636
-rwxr-xr-xchallenge-041/jaldhar-h-vyas/raku/ch-2.sh1
5 files changed, 126 insertions, 0 deletions
diff --git a/challenge-041/jaldhar-h-vyas/blog.txt b/challenge-041/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..a8782cab7a
--- /dev/null
+++ b/challenge-041/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/03/perl_weekly_challenge_week_41.html
diff --git a/challenge-041/jaldhar-h-vyas/perl/ch-1.pl b/challenge-041/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..14e4f83bf2
--- /dev/null
+++ b/challenge-041/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+
+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;
+ }
+ }
+}
+
+sub factorize {
+ my ($n, $primeFactors) = @_;
+ if ($n < 2) {
+ return;
+ }
+
+ my $p = nextPrime(1);
+ while ($p <= $n) {
+
+ if ($n % $p == 0) {
+ push @{$primeFactors}, $p;
+ factorize($n / $p, $primeFactors);
+ }
+ $p = nextPrime();
+ }
+}
+
+for my $n ( 1 .. 50 ) {
+ my @primeFactors;
+ if (isPrime($n)) {
+ push @primeFactors, $n;
+ } else {
+ factorize($n, \@primeFactors);
+ }
+
+ if (isPrime(scalar @primeFactors)) {
+ say $n;
+ }
+} \ No newline at end of file
diff --git a/challenge-041/jaldhar-h-vyas/perl/ch-2.pl b/challenge-041/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..5ed4c39b25
--- /dev/null
+++ b/challenge-041/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,21 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+use Memoize;
+
+sub leonardo {
+ my ($n) = @_;
+
+ if ($n < 2) {
+ return 1;
+ }
+
+ return leonardo($n - 2) + leonardo($n - 1) + 1;
+}
+
+memoize('leonardo');
+
+for my $n (0 .. 19) {
+ say leonardo($n);
+} \ No newline at end of file
diff --git a/challenge-041/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-041/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..b85b7f7179
--- /dev/null
+++ b/challenge-041/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,36 @@
+#!/usr/bin/perl6
+
+sub factorize(Int $n, @primeFactors) {
+ if $n < 2 {
+ return;
+ }
+
+ my $i = 0;
+ my @primes = (1 .. ∞).grep({ .is-prime });
+ my $p = @primes[$i];
+
+ while $p <= $n {
+
+ if $n %% $p {
+ @primeFactors.push($p);
+ factorize($n div $p, @primeFactors);
+ return;
+ }
+ $p = @primes[$i++];
+ }
+}
+
+sub MAIN() {
+ for 1 .. 50 -> $n {
+ my @primeFactors;
+ if $n.is-prime {
+ push @primeFactors, $n;
+ } else {
+ factorize($n, @primeFactors);
+ }
+
+ if @primeFactors.elems.is-prime {
+ say $n;
+ }
+ }
+} \ No newline at end of file
diff --git a/challenge-041/jaldhar-h-vyas/raku/ch-2.sh b/challenge-041/jaldhar-h-vyas/raku/ch-2.sh
new file mode 100755
index 0000000000..1a2c3e797a
--- /dev/null
+++ b/challenge-041/jaldhar-h-vyas/raku/ch-2.sh
@@ -0,0 +1 @@
+perl6 -e '.say for (1, 1, -> $a, $b { $a + $b + 1 } ... *)[0 ..^ 20];' \ No newline at end of file