aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-03-07 08:38:29 +0000
committerGitHub <noreply@github.com>2022-03-07 08:38:29 +0000
commitfeae09b096eb349bd9776a6ee39ac7d7881af824 (patch)
tree82bdd9c7f236f4fff6130e3d759187e6d4b0391f
parentaaa4bc2c92501f932cd31cfc2c7e986874682ae5 (diff)
parent0e8cea09798382685a2cb46232d748ed16279cfa (diff)
downloadperlweeklychallenge-club-feae09b096eb349bd9776a6ee39ac7d7881af824.tar.gz
perlweeklychallenge-club-feae09b096eb349bd9776a6ee39ac7d7881af824.tar.bz2
perlweeklychallenge-club-feae09b096eb349bd9776a6ee39ac7d7881af824.zip
Merge pull request #5749 from jaldhar/challenge-154
Challenge 154 by Jaldhar H. Vyas.
-rw-r--r--challenge-154/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-154/jaldhar-h-vyas/perl/ch-1.pl30
-rwxr-xr-xchallenge-154/jaldhar-h-vyas/perl/ch-2.pl39
-rwxr-xr-xchallenge-154/jaldhar-h-vyas/raku/ch-1.raku10
-rwxr-xr-xchallenge-154/jaldhar-h-vyas/raku/ch-2.raku6
5 files changed, 86 insertions, 0 deletions
diff --git a/challenge-154/jaldhar-h-vyas/blog.txt b/challenge-154/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..ec2fd2e7ef
--- /dev/null
+++ b/challenge-154/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2022/03/perl_weekly_challenge_week_154.html \ No newline at end of file
diff --git a/challenge-154/jaldhar-h-vyas/perl/ch-1.pl b/challenge-154/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..679898af0b
--- /dev/null
+++ b/challenge-154/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub permute (&@) {
+ my $code = shift;
+ my @idx = 0..$#_;
+ while ( $code->(@_[@idx]) ) {
+ my $p = $#idx;
+ --$p while $idx[$p-1] > $idx[$p];
+ my $q = $p or return;
+ push @idx, reverse splice @idx, $p;
+ ++$q while $idx[$p-1] > $idx[$q];
+ @idx[$p-1,$q]=@idx[$q,$p-1];
+ }
+}
+
+my @partial = qw/ PELR PREL PERL PRLE PLER PLRE EPRL EPLR ERPL ERLP ELPR ELRP
+RPEL RPLE REPL RELP RLPE RLEP LPER LPRE LEPR LRPE LREP /;
+
+my @permutations;
+
+permute { push @permutations, \@_; } split //, "PERL";
+my %full = map { $_ => undef } map { join q{}, @{$_}; } @permutations;
+
+for my $part (@partial) {
+ $full{$part}++;
+}
+
+say join q{ }, grep { $_ if !defined $full{$_} } keys %full; \ No newline at end of file
diff --git a/challenge-154/jaldhar-h-vyas/perl/ch-2.pl b/challenge-154/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..fc8b967b94
--- /dev/null
+++ b/challenge-154/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,39 @@
+#!/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 @padovanPrimes;
+my @padovans = (1, 1, 1);
+my %primeMap;
+
+while (scalar @padovanPrimes < 10) {
+ push @padovans, $padovans[0] + $padovans[1];
+ shift @padovans;
+
+ if (isPrime($padovans[2]) && !exists $primeMap{$padovans[2]}) {
+ push @padovanPrimes, $padovans[2];
+ $primeMap{$padovans[2]} = 1;
+ }
+}
+
+say join q{, }, @padovanPrimes; \ No newline at end of file
diff --git a/challenge-154/jaldhar-h-vyas/raku/ch-1.raku b/challenge-154/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..9463d8996f
--- /dev/null
+++ b/challenge-154/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,10 @@
+#!/usr/bin/raku
+
+sub MAIN() {
+ my @partial = < PELR PREL PERL PRLE PLER PLRE EPRL EPLR ERPL ERLP ELPR ELRP
+ RPEL RPLE REPL RELP RLPE RLEP LPER LPRE LEPR LRPE LREP >;
+
+ my @full = "PERL".comb.permutations().map({ .join; });
+
+ say (@full ∖ @partial).keys.join(q{ });
+} \ No newline at end of file
diff --git a/challenge-154/jaldhar-h-vyas/raku/ch-2.raku b/challenge-154/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..9b2d82cf51
--- /dev/null
+++ b/challenge-154/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,6 @@
+#!/usr/bin/raku
+
+sub MAIN() {
+ my @padovans = 1, 1, 1, -> $a, $b, $c { $a + $b } ... *;
+ @padovans.grep({ .is-prime; }).unique[^10].join(q{, }).say;
+} \ No newline at end of file