aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Anderson <mark@frontrangerunner.com>2020-12-23 10:06:23 -0700
committerMark Anderson <mark@frontrangerunner.com>2020-12-23 10:06:23 -0700
commit81510c4f0e448fb78c8026e56d104c331f670f20 (patch)
tree25b368c77423c55eb9a44a88c1dca3e16db46beb
parent8e3eb410257e52a04a65c313908173b935865683 (diff)
downloadperlweeklychallenge-club-81510c4f0e448fb78c8026e56d104c331f670f20.tar.gz
perlweeklychallenge-club-81510c4f0e448fb78c8026e56d104c331f670f20.tar.bz2
perlweeklychallenge-club-81510c4f0e448fb78c8026e56d104c331f670f20.zip
ch-2.raku again...
-rw-r--r--challenge-092/mark-anderson/raku/ch-2.raku40
-rw-r--r--challenge-092/mark-anderson/raku/old-ch-2.raku (renamed from challenge-092/mark-anderson/raku/ch-2-flexible.raku)0
2 files changed, 18 insertions, 22 deletions
diff --git a/challenge-092/mark-anderson/raku/ch-2.raku b/challenge-092/mark-anderson/raku/ch-2.raku
index 0097190745..15336fe2cd 100644
--- a/challenge-092/mark-anderson/raku/ch-2.raku
+++ b/challenge-092/mark-anderson/raku/ch-2.raku
@@ -1,31 +1,27 @@
#!/usr/bin/env raku
use Test;
-plan 5;
-
-is-deeply insert-interval(
- (2,6), [(1,4), (8,10)]), [(1,6), (8,10)], "Example 1";
-is-deeply insert-interval(
- (5,8), [(1,2), (3,7), (8,10)]), [(1,2), (3,10)], "Example 2";
-is-deeply insert-interval(
- (10,11), [(1,5), (7,9)]), [(1,5), (7,9), (10,11)], "Example 3";
-is-deeply insert-interval(
- (1,2), [(3,4), (7,8)]), [(1,2), (3,4), (7,8)], "First";
-is-deeply insert-interval(
- (1,9), [(2,3), (7,8)]), [(1,9),], "Around";
+plan 9;
+
+is-deeply insert-interval((2,6), ((1,4),(8,10))), ((1,6),(8,10));
+is-deeply insert-interval((5,8), ((1,2),(3,7),(8,10))), ((1,2), (3,10));
+is-deeply insert-interval((10,11), ((1,5),(7,9))), ((1,5),(7,9),(10,11));
+is-deeply insert-interval((1,2), ((3,4),(7,8))), ((1,2),(3,4),(7,8));
+is-deeply insert-interval((1,9), ((2,3),(7,8))), ((1,9),);
+is-deeply insert-interval((3,5), ((1,2),(6,9))), ((1,2),(3,5),(6,9));
+is-deeply insert-interval((4,5), ((1,2),(3,6),(7,9))), ((1,2),(3,6),(7,9));
+is-deeply insert-interval((2,8), ((1,2),(3,7),(8,10))), ((1,10),);
+is-deeply insert-interval((2,5), ((1,2),(3,7),(8,10))), ((1,7),(8,10));
sub insert-interval($N, @S) {
- return [$N, |@S] if $N[1] < @S[0;0];
-
- my @result;
-
- @result.push: @S.shift while @S and @S[0;1] < $N[0];
-
- my $head = min @S[0;0], $N[0];
+ return $N, |@S if $N[1] < @S[0;0];
+ return |@S, $N if $N[0] > @S[*-1][0];
- @S.shift while @S[1] and @S[1;0] <= $N[1];
+ my $h = @S.first({ $N[0] <= .[1] }, :k);
+ my $t = @S.first({ $N[1] >= .[0] }, :k:end);
- my $tail = max @S[0;1], $N[1];
+ my $head = min $N[0], @S[$h;0];
+ my $tail = max $N[1], @S[$t;1];
- @result.append: $($head, $tail), |@S[1..*];
+ |@S[0..$h-1], ($head, $tail), |@S[$t+1..*];
}
diff --git a/challenge-092/mark-anderson/raku/ch-2-flexible.raku b/challenge-092/mark-anderson/raku/old-ch-2.raku
index 1b054bd1b3..1b054bd1b3 100644
--- a/challenge-092/mark-anderson/raku/ch-2-flexible.raku
+++ b/challenge-092/mark-anderson/raku/old-ch-2.raku