aboutsummaryrefslogtreecommitdiff
path: root/challenge-147
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2022-01-16 23:44:02 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2022-01-16 23:44:02 -0500
commitd0f829f1a85ec8622afcbf172a39dcc0e03e1739 (patch)
treed054760c25ee1242f6140ea5b9aede0652c32819 /challenge-147
parent6dd0f2cf7c7e4c3a43871ccad75ca9fbac58c129 (diff)
downloadperlweeklychallenge-club-d0f829f1a85ec8622afcbf172a39dcc0e03e1739.tar.gz
perlweeklychallenge-club-d0f829f1a85ec8622afcbf172a39dcc0e03e1739.tar.bz2
perlweeklychallenge-club-d0f829f1a85ec8622afcbf172a39dcc0e03e1739.zip
Challenge 147 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-147')
-rw-r--r--challenge-147/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/perl/ch-1.pl43
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/perl/ch-2.pl43
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/raku/ch-1.raku23
-rwxr-xr-xchallenge-147/jaldhar-h-vyas/raku/ch-2.raku22
5 files changed, 132 insertions, 0 deletions
diff --git a/challenge-147/jaldhar-h-vyas/blog.txt b/challenge-147/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..8e757c387a
--- /dev/null
+++ b/challenge-147/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2022/01/perl_weekly_challenge_week_147.html
diff --git a/challenge-147/jaldhar-h-vyas/perl/ch-1.pl b/challenge-147/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..6db67bff6d
--- /dev/null
+++ b/challenge-147/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+use 5.020;
+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 @primes;
+my $n = 2;
+
+while (scalar @primes < 20) {
+ if ($n !~ /0/ && isPrime($n)) {
+ my $candidate = $n;
+
+ while (length $candidate && isPrime($candidate)) {
+ $candidate = substr $candidate, 1;
+ }
+
+ if (length $candidate == 0) {
+ push @primes, $n;
+ }
+ }
+ $n++;
+}
+
+say join q{, }, @primes;
diff --git a/challenge-147/jaldhar-h-vyas/perl/ch-2.pl b/challenge-147/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..22a801ba46
--- /dev/null
+++ b/challenge-147/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+sub combinations {
+ my @list = @{$_[0]};
+ my $length = $_[1];
+
+ if ($length <= 1) {
+ return map [$_], @list;
+ }
+
+ my @combos;
+
+ for (my $i = 0; $i + $length <= scalar @list; $i++) {
+ my $val = $list[$i];
+ my @rest = @list[$i + 1 .. $#list];
+ for my $c (combinations(\@rest, $length - 1)) {
+ push @combos, [$val, @{$c}] ;
+ }
+ }
+
+ return @combos;
+}
+
+sub pentagon {
+ my ($n) = @_;
+
+ return $n * (3 * $n - 1) / 2;
+}
+
+my %p;
+
+for my $n (1_000 .. 3_000) {
+ $p{pentagon($n)} = $n;
+}
+
+for my $combo (combinations([keys %p], 2)) {
+ if (exists $p{$combo->[0] + $combo->[1]} && exists $p{ abs($combo->[0] - $combo->[1])}) {
+ say join q{, }, ($p{$combo->[0]}, $p{$combo->[1]});
+ last;
+ }
+}
diff --git a/challenge-147/jaldhar-h-vyas/raku/ch-1.raku b/challenge-147/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..44ab2bf3f3
--- /dev/null
+++ b/challenge-147/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/raku
+
+sub MAIN() {
+ my @primes;
+ my $n = 2;
+
+ while @primes.elems < 20 {
+ if !$n.match( /0/ ) && $n.is-prime() {
+ my $candidate = $n;
+
+ while $candidate.is-prime() {
+ $candidate = $candidate.substr(1,);
+ }
+
+ if $candidate.chars == 0 {
+ @primes.push($n);
+ }
+ }
+ $n++;
+ }
+
+ @primes.join(q{, }).say;
+} \ No newline at end of file
diff --git a/challenge-147/jaldhar-h-vyas/raku/ch-2.raku b/challenge-147/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..b38cf60acd
--- /dev/null
+++ b/challenge-147/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,22 @@
+#!/usr/bin/raku
+
+sub pentagon(Int $n) {
+ return $n * (3 * $n - 1) / 2;
+}
+
+sub MAIN() {
+ my %p;
+
+ for 1_000 .. 3_000 -> $n {
+ %p{pentagon($n)} = $n;
+ }
+
+ for %p.keys.combinations(2) -> @combo {
+ if (%p{@combo[0] + @combo[1]}:exists) && (%p{(@combo[0] - @combo[1]).abs}:exists) {
+ (%p{@combo[0]}, %p{@combo[1]})
+ .join(q{, })
+ .say;
+ last;
+ }
+ }
+} \ No newline at end of file