diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-12-23 10:06:23 -0700 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-12-23 10:06:23 -0700 |
| commit | 81510c4f0e448fb78c8026e56d104c331f670f20 (patch) | |
| tree | 25b368c77423c55eb9a44a88c1dca3e16db46beb | |
| parent | 8e3eb410257e52a04a65c313908173b935865683 (diff) | |
| download | perlweeklychallenge-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.raku | 40 | ||||
| -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 |
