aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Davies <kaiepi@outlook.com>2021-10-04 18:58:00 -0300
committerBen Davies <kaiepi@outlook.com>2021-10-04 19:07:57 -0300
commit753b5718d1347ac0342e0c4b0e28f7e00fb9fb06 (patch)
tree90b3d57fad5a2b56bdb205b870c75fddf602bb30
parent20ffd7b7c80e195548325ace22fe92f2a499984c (diff)
downloadperlweeklychallenge-club-753b5718d1347ac0342e0c4b0e28f7e00fb9fb06.tar.gz
perlweeklychallenge-club-753b5718d1347ac0342e0c4b0e28f7e00fb9fb06.tar.bz2
perlweeklychallenge-club-753b5718d1347ac0342e0c4b0e28f7e00fb9fb06.zip
Add Ben Davies' Raku solutions for challenge 133
-rw-r--r--challenge-133/ben-davies/raku/ch-1.raku4
-rw-r--r--challenge-133/ben-davies/raku/ch-2.raku13
2 files changed, 17 insertions, 0 deletions
diff --git a/challenge-133/ben-davies/raku/ch-1.raku b/challenge-133/ben-davies/raku/ch-1.raku
new file mode 100644
index 0000000000..98fd70d0ee
--- /dev/null
+++ b/challenge-133/ben-davies/raku/ch-1.raku
@@ -0,0 +1,4 @@
+use v6;
+unit sub MAIN(Int:D $n where * > 0) {
+ say (1..$n).first({ $^x == $n div $^x });
+}
diff --git a/challenge-133/ben-davies/raku/ch-2.raku b/challenge-133/ben-davies/raku/ch-2.raku
new file mode 100644
index 0000000000..ba862a20e4
--- /dev/null
+++ b/challenge-133/ben-davies/raku/ch-2.raku
@@ -0,0 +1,13 @@
+use v6;
+unit sub MAIN() {
+ .say for (1..*).hyper.grep(*.&is-smith-number: 10).head(10);
+}
+sub is-smith-number(Int:D $x, Int:D $base) {
+ not $x.is-prime and $x.&digits($base).sum == $x.&prime-factors».&digits($base).flat.sum
+}
+sub digits(Int:D $x, Int:D $base) {
+ $x.polymod($base xx $x.log: $base).reverse
+}
+sub prime-factors(Int:D $x is copy) {
+ gather $x div= take (2..$x).grep(*.is-prime).first($x %% *) while $x > 1
+}