diff options
| -rw-r--r-- | challenge-041/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-041/jaldhar-h-vyas/perl/ch-1.pl | 67 | ||||
| -rwxr-xr-x | challenge-041/jaldhar-h-vyas/perl/ch-2.pl | 21 | ||||
| -rwxr-xr-x | challenge-041/jaldhar-h-vyas/raku/ch-1.p6 | 36 | ||||
| -rwxr-xr-x | challenge-041/jaldhar-h-vyas/raku/ch-2.sh | 1 |
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 |
