diff options
| -rw-r--r-- | challenge-295/wambash/raku/ch-1.raku | 18 | ||||
| -rw-r--r-- | challenge-295/wambash/raku/ch-2.raku | 28 |
2 files changed, 46 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..daa0978913 --- /dev/null +++ b/challenge-295/wambash/raku/ch-2.raku @@ -0,0 +1,28 @@ +#!/usr/bin/env raku + +sub jump ($from, +@ints) { + $from «+« ( 1..@ints[$from] ) +} + +sub jump-game (+@ints) { + (0,), { .unique.map: { |jump $_, @ints } } ... * + andthen .head: @ints.elems + andthen .first: -> @where { @ints.end ∈ @where }, :k +} + +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),Nil; + is jump-game(1,1,1,1,1,1,0),6; + is jump-game(0,0),Nil; + done-testing; +} + +multi MAIN (+@ints) { + say jump-game( @ints ) // -1 +} |
