diff options
| -rw-r--r-- | challenge-133/ben-davies/raku/ch-1.raku | 4 | ||||
| -rw-r--r-- | challenge-133/ben-davies/raku/ch-2.raku | 13 |
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 +} |
