aboutsummaryrefslogtreecommitdiff
path: root/challenge-169
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-06-19 18:09:46 +0100
committerGitHub <noreply@github.com>2022-06-19 18:09:46 +0100
commitf6fa009588ba72e94b43350ef772dc9da8e95129 (patch)
tree65b8d15d542bb90a3ca68a5dc4f7b258d46a71d0 /challenge-169
parent5ebb5814e1622e184b7f0445e48dd8684e4cff1d (diff)
parent710e2793436461c9ad4e1c2dcd0c6e84576d095d (diff)
downloadperlweeklychallenge-club-f6fa009588ba72e94b43350ef772dc9da8e95129.tar.gz
perlweeklychallenge-club-f6fa009588ba72e94b43350ef772dc9da8e95129.tar.bz2
perlweeklychallenge-club-f6fa009588ba72e94b43350ef772dc9da8e95129.zip
Merge pull request #6286 from wambash/challenge-week-169
solutions week 169
Diffstat (limited to 'challenge-169')
-rw-r--r--challenge-169/wambash/raku/ch-1.raku25
-rw-r--r--challenge-169/wambash/raku/ch-2.raku25
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
+}