aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-295/wambash/raku/ch-1.raku18
-rw-r--r--challenge-295/wambash/raku/ch-2.raku31
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-295/wambash/raku/ch-1.raku b/challenge-295/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..c306fd91f7
--- /dev/null
+++ b/challenge-295/wambash/raku/ch-1.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/env raku
+
+sub word-break ($str, +@words) {
+ $str.contains: /^ @words+ $/
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is word-break('weeklychallenge', 'challenge','weekly'), True;
+ is word-break('perlrakuperl', 'perl','raku'), True;
+ is word-break('sonsanddaughters', 'sons', 'sand', 'daughters'), False;
+ is word-break('sonssanddaughters', 'sons', 'sand', 'daughters'), True;
+ done-testing;
+}
+
+multi MAIN ($str, +words) {
+ say word-break $str, words
+}
diff --git a/challenge-295/wambash/raku/ch-2.raku b/challenge-295/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..b03b37a905
--- /dev/null
+++ b/challenge-295/wambash/raku/ch-2.raku
@@ -0,0 +1,31 @@
+#!/usr/bin/env raku
+
+sub jump ($from, +@ints) {
+ $from «+« ( 1..@ints[$from] )
+ andthen .Slip
+}
+
+sub jump-game (+@ints) {
+ (0,), { .unique.map: { jump $_, @ints } } ... -> @where { @ints.end ∈ @where }\
+ andthen .skip
+ andthen .head: @ints.elems
+ andthen .elems
+ andthen $_ ≤ @ints.end ?? $_ !! -1
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is jump( 2, (2,3,1,1,4) ), 3;
+ is jump( 0, (2,3,1,1,4) ), (1,2);
+ is jump( 1, (2,3,1,1,4) ), (2,3,4);
+ is jump-game(2,3,1,1,4),2;
+ is jump-game(2,3,0,4),2;
+ is jump-game(2,0,0,4),-1;
+ is jump-game(1,1,1,1,1,1,0),6;
+ is jump-game(0,0),-1;
+ done-testing;
+}
+
+multi MAIN (+@ints) {
+ say jump-game @ints
+}