aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-109/wambash/raku/ch-1.raku21
-rw-r--r--challenge-109/wambash/raku/ch-2.raku20
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;
+}