aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark A <andemark@a-iot1t.uch.ad.pvt>2021-08-31 02:39:57 -0600
committerMark A <andemark@a-iot1t.uch.ad.pvt>2021-08-31 02:39:57 -0600
commitc15b7c3c0aae51af62930deb9d1bfc2f41114d3a (patch)
tree7c29356d545fe33756bf89162ad049958145e49d
parent5d0d8804def60294f33cd5c023c822577161ed9b (diff)
downloadperlweeklychallenge-club-c15b7c3c0aae51af62930deb9d1bfc2f41114d3a.tar.gz
perlweeklychallenge-club-c15b7c3c0aae51af62930deb9d1bfc2f41114d3a.tar.bz2
perlweeklychallenge-club-c15b7c3c0aae51af62930deb9d1bfc2f41114d3a.zip
ch-2.raku
-rw-r--r--challenge-128/mark-anderson/raku/ch-2.raku34
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-128/mark-anderson/raku/ch-2.raku b/challenge-128/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..6ce7d0fe18
--- /dev/null
+++ b/challenge-128/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,34 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 2;
+
+is minimum-platforms(<11:20 14:30>, <11:50 15:00>), 1, 'Example 1';
+
+is minimum-platforms(<10:20 11:00 11:10 12:20 16:20 19:00>,
+ <10:30 13:20 12:40 12:50 20:20 21:20>), 3, 'Example 2';
+
+sub minimum-platforms($arrivals, $departures)
+{
+ my @queue;
+ my $result;
+ my @arrivals = $arrivals.sort;
+ my @departures = $departures.sort;
+
+ while @arrivals
+ {
+ if @arrivals.head lt @departures.head
+ {
+ @queue.push: @arrivals.shift;
+ $result = max($result, +@queue);
+ }
+
+ else
+ {
+ @departures.shift;
+ @queue.shift;
+ }
+ }
+
+ $result;
+}