diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2022-01-16 23:44:02 -0500 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2022-01-16 23:44:02 -0500 |
| commit | d0f829f1a85ec8622afcbf172a39dcc0e03e1739 (patch) | |
| tree | d054760c25ee1242f6140ea5b9aede0652c32819 /challenge-147 | |
| parent | 6dd0f2cf7c7e4c3a43871ccad75ca9fbac58c129 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-147/jaldhar-h-vyas/perl/ch-1.pl | 43 | ||||
| -rwxr-xr-x | challenge-147/jaldhar-h-vyas/perl/ch-2.pl | 43 | ||||
| -rwxr-xr-x | challenge-147/jaldhar-h-vyas/raku/ch-1.raku | 23 | ||||
| -rwxr-xr-x | challenge-147/jaldhar-h-vyas/raku/ch-2.raku | 22 |
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 |
