aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-06-04 22:24:33 +0100
committerGitHub <noreply@github.com>2023-06-04 22:24:33 +0100
commitcbde6a54a8f112c9d9d0be8d92189f8a3ac2f954 (patch)
treee29f87c7e34d9ddc6b50bb4e63ade5afef6e8275
parentb62fe76f9d5a6187ec47ad6f4a091542aa9a72a1 (diff)
parentc7632da5c2846bc221acf9e0b542f9c4751c5bde (diff)
downloadperlweeklychallenge-club-cbde6a54a8f112c9d9d0be8d92189f8a3ac2f954.tar.gz
perlweeklychallenge-club-cbde6a54a8f112c9d9d0be8d92189f8a3ac2f954.tar.bz2
perlweeklychallenge-club-cbde6a54a8f112c9d9d0be8d92189f8a3ac2f954.zip
Merge pull request #8180 from wambash/challenge-week-219
solutions week 219
-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
+}