From c7632da5c2846bc221acf9e0b542f9c4751c5bde Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 4 Jun 2023 21:21:46 +0200 Subject: solutions week 219 --- challenge-219/wambash/raku/ch-1.raku | 18 ++++++++++++++++++ challenge-219/wambash/raku/ch-2.raku | 28 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 challenge-219/wambash/raku/ch-1.raku create mode 100644 challenge-219/wambash/raku/ch-2.raku 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 { T } + my token week { T <[Tx]> ** 1..6 } + my token month { T **? 6..28] T> <[Tx]> ** 7..29 } + + @day-plan.join + andthen .match: / ^ x* [ | | ]+ %% 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 +} -- cgit