diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2022-06-19 16:37:50 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2022-06-19 16:37:50 +0200 |
| commit | 710e2793436461c9ad4e1c2dcd0c6e84576d095d (patch) | |
| tree | 56a8f019bd7020b85c5ca5c0a6d636d7fcb35478 /challenge-169 | |
| parent | 7c2fa584618da574d42b1713c3c343423991c781 (diff) | |
| download | perlweeklychallenge-club-710e2793436461c9ad4e1c2dcd0c6e84576d095d.tar.gz perlweeklychallenge-club-710e2793436461c9ad4e1c2dcd0c6e84576d095d.tar.bz2 perlweeklychallenge-club-710e2793436461c9ad4e1c2dcd0c6e84576d095d.zip | |
solutions week 169
Diffstat (limited to 'challenge-169')
| -rw-r--r-- | challenge-169/wambash/raku/ch-1.raku | 25 | ||||
| -rw-r--r-- | challenge-169/wambash/raku/ch-2.raku | 25 |
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-169/wambash/raku/ch-1.raku b/challenge-169/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..7109be4bee --- /dev/null +++ b/challenge-169/wambash/raku/ch-1.raku @@ -0,0 +1,25 @@ +#!/usr/bin/env raku + +sub brilliant-numbers (UInt $n) { + 10 ** $n ^..^ 10** ($n+1) + andthen .grep: *.is-prime + andthen .cache + andthen |.combinations(2), |($_ Z, $_) + andthen .map: {[*] $_}\ + andthen .sort + andthen .Slip +} + +constant BrilliantNumbers = (0..Inf).map: &brilliant-numbers; + +multi MAIN (Bool :test($)!) { + use Test; + is brilliant-numbers(0), <4 6 9 10 14 15 21 25 35 49>; + is brilliant-numbers(1).head(10), (121, 143, 169, 187, 209, 221, 247, 253, 289, 299); + is BrilliantNumbers.head(20), (4, 6, 9, 10, 14, 15, 21, 25, 35, 49, 121, 143, 169, 187, 209, 221, 247, 253, 289, 299); + done-testing; +} + +multi MAIN (UInt $n=20) { + put BrilliantNumbers.head: $n +} diff --git a/challenge-169/wambash/raku/ch-2.raku b/challenge-169/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..6f70147d33 --- /dev/null +++ b/challenge-169/wambash/raku/ch-2.raku @@ -0,0 +1,25 @@ +#!/usr/bin/env raku +use Prime::Factor; + +sub is-Achilles ($n) { + prime-factors $n + andthen bag $_ + andthen .values.cache + andthen (.all > 1) & (1 == [gcd] $_) + andthen .so +} + +constant Achilles = (2..∞).grep: &is-Achilles; +multi MAIN (Bool :test($)!) { + use Test; + is is-Achilles(72),True; + is is-Achilles(36),False; + is is-Achilles(1568),True; + is is-Achilles(1668),False; + is Achilles.head(20),(72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125, 1152, 1323, 1352, 1372, 1568, 1800); + done-testing; +} + +multi MAIN (UInt $n=20) { + put Achilles.head: $n +} |
