diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-03-07 08:38:29 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-07 08:38:29 +0000 |
| commit | feae09b096eb349bd9776a6ee39ac7d7881af824 (patch) | |
| tree | 82bdd9c7f236f4fff6130e3d759187e6d4b0391f | |
| parent | aaa4bc2c92501f932cd31cfc2c7e986874682ae5 (diff) | |
| parent | 0e8cea09798382685a2cb46232d748ed16279cfa (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-154/jaldhar-h-vyas/perl/ch-1.pl | 30 | ||||
| -rwxr-xr-x | challenge-154/jaldhar-h-vyas/perl/ch-2.pl | 39 | ||||
| -rwxr-xr-x | challenge-154/jaldhar-h-vyas/raku/ch-1.raku | 10 | ||||
| -rwxr-xr-x | challenge-154/jaldhar-h-vyas/raku/ch-2.raku | 6 |
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 |
