diff options
| -rw-r--r-- | challenge-109/wambash/raku/ch-1.raku | 21 | ||||
| -rw-r--r-- | challenge-109/wambash/raku/ch-2.raku | 20 |
2 files changed, 41 insertions, 0 deletions
diff --git a/challenge-109/wambash/raku/ch-1.raku b/challenge-109/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..d8e7aa8bfe --- /dev/null +++ b/challenge-109/wambash/raku/ch-1.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku + +sub chowla-number ( $n ) { + 2 .. $n / 2 + andthen .grep: $n %% * + andthen .sum +} + +constant @chowla-numbers = (1 .. ∞).map: &chowla-number; + +multi MAIN (Bool :test($)!) { + use Test; + is @chowla-numbers.head(20), (0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21); + my $big-prime = (100_000 .. ∞).first: *.is-prime; + is chowla-number($big-prime), 0; + done-testing; +} + +multi MAIN ($n=20) { + put @chowla-numbers.head($n) +} diff --git a/challenge-109/wambash/raku/ch-2.raku b/challenge-109/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..d8380fdb4a --- /dev/null +++ b/challenge-109/wambash/raku/ch-2.raku @@ -0,0 +1,20 @@ +#!/usr/bin/env raku + +sub four-squares-puzzle ( +@n ) { + @n.permutations + andthen .pick: * + andthen .map: *.rotor: 2 => -1, 3 => -1, 3 => -1, 2 => -1 + andthen .first: { [==] .cache.map: *.sum } +} + + +multi MAIN ( +@n ) { + say four-squares-puzzle @n +} + +multi MAIN (:test($)!) { + use Test; + is four-squares-puzzle(1..7).all.sum, 9|10|11 ; + is four-squares-puzzle(2,-2,10,-8, 30, -22,+22).all.sum, 0 ; + done-testing; +} |
