aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-219/wambash/raku/ch-1.raku18
-rw-r--r--challenge-219/wambash/raku/ch-2.raku28
2 files changed, 46 insertions, 0 deletions
diff --git a/challenge-219/wambash/raku/ch-1.raku b/challenge-219/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..4b74de2b46
--- /dev/null
+++ b/challenge-219/wambash/raku/ch-1.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/env raku
+
+sub sorted-squares (+@list) {
+ @list
+ andthen .map: *²
+ andthen .sort
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is sorted-squares(-2,-1,0,3,4),(0,1,4,9,16);
+ is sorted-squares(5, -4, -1, 3, 6),(1, 9, 16, 25, 36);
+ done-testing;
+}
+
+multi MAIN (*@list) {
+ say sorted-squares @list
+}
diff --git a/challenge-219/wambash/raku/ch-2.raku b/challenge-219/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..ef9ddb0f40
--- /dev/null
+++ b/challenge-219/wambash/raku/ch-2.raku
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+use v6.e.*;
+
+sub travel-expenditure (+@days, *%costs (:$day, :$week, :$month)) {
+ my Str @day-plan is default('x') ;
+ @day-plan[|@days] = 'T' xx *;
+ my token day { <!after T ** 6> T }
+ my token week { T <?before T x* T> <[Tx]> ** 1..6 }
+ my token month { T <?before T [<[Tx]> **? 6..28] T> <[Tx]> ** 7..29 }
+
+ @day-plan.join
+ andthen .match: / ^ x* [ <month> | <week> | <day> ]+ %% x* $/, :ex
+ andthen .map: *.caps.map: *.key
+ andthen .map: { %costs{|$_}.sum }\
+ andthen .min
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is travel-expenditure( 1,3,4,5,6):5day:30week:90month, 25;
+ is travel-expenditure( 1, 5, 6, 7, 9, 15,:2day:7week:25month), 11;
+ is travel-expenditure( 1, 2, 3, 5, 7, 10, 11, 12, 14, 20, 30, 31,:2day:7week:25month), 20;
+ done-testing;
+}
+
+multi MAIN (+@days, :d($day)!,:w($week)!,:m($month)!) {
+ say travel-expenditure @days, :$day, :$week, :$month
+}