aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-100/wambash/raku/ch-1.raku26
-rw-r--r--challenge-100/wambash/raku/ch-2.raku24
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-100/wambash/raku/ch-1.raku b/challenge-100/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..bd1328645e
--- /dev/null
+++ b/challenge-100/wambash/raku/ch-1.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/env raku
+
+multi fun-time($time) {
+ $time ~~ / (\d+) ':' (\d+) \s* (<[ap]>m)? /;
+
+ with $2 {
+ when 'am' { $0 ~ ':' ~ $1 }
+ when 'pm' { $0 + 12 ~ ':' ~ $1 }
+ } orwith $0 {
+ when * ≤ 12 { $0 ~ ':' ~ $1 ~ 'am' }
+ when * > 12 { '0' ~ ($0 - 12) ~ ':' ~ $1 ~ 'pm' }
+ }
+}
+
+multi MAIN ($time) {
+ say fun-time $time
+}
+
+multi MAIN (Bool :$test! ) {
+ use Test;
+ is fun-time('19:20'), '07:20pm';
+ is fun-time('07:20pm'), '19:20';
+ is fun-time('07:20 am'), '07:20';
+ is fun-time('07:20'), '07:20am';
+ done-testing;
+}
diff --git a/challenge-100/wambash/raku/ch-2.raku b/challenge-100/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..17f5776857
--- /dev/null
+++ b/challenge-100/wambash/raku/ch-2.raku
@@ -0,0 +1,24 @@
+#!/usr/bin/env raku
+
+sub triangle-sum-reducer (@a, @b) {
+ Inf, |@a, Inf
+ andthen .rotor: 2 => -1
+ andthen .map: *.min
+ andthen $_ Z+ @b
+}
+
+sub triangle-sum ( +@a ) {
+ @a
+ andthen .reduce: &triangle-sum-reducer
+ andthen .min
+}
+
+multi MAIN (Bool :$test!) {
+ use Test;
+ is triangle-sum-reducer( [1], [2,4] ), (3,5);
+ is triangle-sum-reducer( [6,4,9], [5,1,7,2] ), (11,5,11,11);
+
+ is triangle-sum( [3], [3,1], [5,2,3], [4,3,1,3] ), 7;
+ is triangle-sum( [1], [2,4], [6,4,9], [5,1,7,2] ), 8;
+ done-testing;
+}