aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
+}