aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-206/2colours/raku/ch-1.raku26
-rwxr-xr-xchallenge-206/2colours/raku/ch-2.raku13
2 files changed, 39 insertions, 0 deletions
diff --git a/challenge-206/2colours/raku/ch-1.raku b/challenge-206/2colours/raku/ch-1.raku
new file mode 100755
index 0000000000..b0ea729a7a
--- /dev/null
+++ b/challenge-206/2colours/raku/ch-1.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/env raku
+
+
+my token time-hours24 { \d ** 2 <?{$/ < 24}> }
+my token time-minutes { \d ** 2 <?{$/ < 60}> }
+my token time-o-clock { <time-hours24> ':' <time-minutes> }
+my token time-list {^ '(' ['"' <time-o-clock> '"'] ** 2..* % ',' ')' $}
+
+sub infix:<t->($lhs is copy, $rhs is copy) {
+ $_ = .split(':').&{ .[0] * 60 + .[1]} for ($lhs, $rhs);
+ ($lhs - $rhs) % 1440
+}
+
+sub MAIN($_) {
+ die 'Please provide a valid list of HH:MM times' unless S:g/\s// ~~ &time-list;
+ given my Str() @time = $<time-o-clock> {
+ .=sort;
+ .push: .head;
+ }
+ say @time;
+ @time
+ .rotor: 2 => -1 andthen
+ .map: { .[1] t- .[0] } andthen
+ .min
+ .say;
+} \ No newline at end of file
diff --git a/challenge-206/2colours/raku/ch-2.raku b/challenge-206/2colours/raku/ch-2.raku
new file mode 100755
index 0000000000..dd8a4d3895
--- /dev/null
+++ b/challenge-206/2colours/raku/ch-2.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+
+
+my token unsigned-integer { 0 | <[1..9]><[0..9]>* };
+my token integer { '-'? <unsigned-integer> };
+subset IntList of Str where /^ '(' <integer>* % ',' ')' $/;
+
+
+sub MAIN(Str $array) {
+ die 'Please supply a valid list of integers.' unless $array.subst(/\s/, '', :g) ~~ IntList;
+ my Int() @array = $<integer>;
+ @array.sort.rotor(1 => 1).flat.sum.say;
+}