diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-01-10 19:05:08 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-10 19:05:08 +0000 |
| commit | e5138f28be67b47a82fdd71a003e0a358621a5d7 (patch) | |
| tree | 9917636afef2051368a6a7722169d94651ae5a37 | |
| parent | 8345631869a320666c14e65f83600dcb3494fac1 (diff) | |
| parent | 94a16b7453f95b6898e3d5d28d2f25a554a0d061 (diff) | |
| download | perlweeklychallenge-club-e5138f28be67b47a82fdd71a003e0a358621a5d7.tar.gz perlweeklychallenge-club-e5138f28be67b47a82fdd71a003e0a358621a5d7.tar.bz2 perlweeklychallenge-club-e5138f28be67b47a82fdd71a003e0a358621a5d7.zip | |
Merge pull request #5499 from Scimon/master
Challenge 147
| -rw-r--r-- | challenge-147/simon-proctor/raku/ch-1.raku | 27 | ||||
| -rw-r--r-- | challenge-147/simon-proctor/raku/ch-2.raku | 18 |
2 files changed, 45 insertions, 0 deletions
diff --git a/challenge-147/simon-proctor/raku/ch-1.raku b/challenge-147/simon-proctor/raku/ch-1.raku new file mode 100644 index 0000000000..574ec4a48b --- /dev/null +++ b/challenge-147/simon-proctor/raku/ch-1.raku @@ -0,0 +1,27 @@ +#!/usr/bin/env raku + +use experimental :cached; + +#| Display the first 20 base 10 left-truncatable primes +multi sub MAIN() { + .say for (1..*).grep( { is-left-truncatable($_) } )[^20]; +} + +multi sub MAIN("test") is hidden-from-USAGE { + use Test; + ok( is-left-truncatable( 9137 ) ); + ok( is-left-truncatable( 137 ) ); + ok( is-left-truncatable( 7 ) ); + ok( ! is-left-truncatable( 101 ) ); + ok( ! is-left-truncatable( 8 ) ); + ok( ! is-left-truncatable( 151 ) ); + done-testing; +} + +sub is-left-truncatable( UInt \v ) is pure is cached { + return False unless v.is-prime; + return False if v ~~ /0/; + return True if v.codes == 1; + + return is-left-truncatable( v.substr(1).Int ); +} diff --git a/challenge-147/simon-proctor/raku/ch-2.raku b/challenge-147/simon-proctor/raku/ch-2.raku new file mode 100644 index 0000000000..60b8421907 --- /dev/null +++ b/challenge-147/simon-proctor/raku/ch-2.raku @@ -0,0 +1,18 @@ +#!/usr/bin/env raku + +my @pentagons = (1..*).map( { $_ * ((3 * $_)-1) / 2 }); + +my @vals = lazy gather { + for (0..5000) -> $i { + for (0..^$i) -> $j { + take (@pentagons[$i], @pentagons[$j], $i+$j); + } + } +}; + +@vals.race.grep( + -> (\a, \b, \m) { + my \check = Set(@pentagons[^m]); + ((a - b) (elem) check) && ((a + b) (elem) check); + } +).map( -> (\a, \b, \m) { ( a, b ) } ).first.say |
