aboutsummaryrefslogtreecommitdiff
path: root/challenge-050
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-03-08 19:49:41 +0000
committerGitHub <noreply@github.com>2020-03-08 19:49:41 +0000
commitdd58ec7d90a4a13a8e1725bbef8a9bd5f2cf2a38 (patch)
tree6238bf92bef350aed8d862290b9773187b2be69c /challenge-050
parent8d51e1e1dfd356fb0dee3f7aeaa8433c329f600e (diff)
parent6a5221c217f0774a0a0c58e233c5c76faab8a458 (diff)
downloadperlweeklychallenge-club-dd58ec7d90a4a13a8e1725bbef8a9bd5f2cf2a38.tar.gz
perlweeklychallenge-club-dd58ec7d90a4a13a8e1725bbef8a9bd5f2cf2a38.tar.bz2
perlweeklychallenge-club-dd58ec7d90a4a13a8e1725bbef8a9bd5f2cf2a38.zip
Merge pull request #1366 from andemark/branch-for-challenge-050
rewrote ch-2.p6
Diffstat (limited to 'challenge-050')
-rw-r--r--challenge-050/mark-anderson/raku/ch-1.p630
-rw-r--r--challenge-050/mark-anderson/raku/ch-2.p627
2 files changed, 42 insertions, 15 deletions
diff --git a/challenge-050/mark-anderson/raku/ch-1.p6 b/challenge-050/mark-anderson/raku/ch-1.p6
index d80ee77243..63b1e5d6c2 100644
--- a/challenge-050/mark-anderson/raku/ch-1.p6
+++ b/challenge-050/mark-anderson/raku/ch-1.p6
@@ -2,20 +2,30 @@
use Test;
-plan 3;
+plan 5;
-is-deeply merge([[2,7], [3,9], [10,12], [15,19], [18,22]]),
- [[2,9], [10,12], [15,22]];
+is-deeply merge([[1, 2], ]),
+ [[1, 2], ],
+ "[[1, 2], ] = [[1, 2], ]";
-is-deeply merge([[1,3], [5,9], [7,8], [3,4]]),
- [[1,4], [5,9]];
+is-deeply merge([[2, 7], [3, 9], [10, 12], [15, 19], [18, 22]]),
+ [[2, 9], [10, 12], [15, 22]],
+ "[[2, 7], [3, 9], [10, 12], [15, 19], [18, 22]] = [[2, 9], [10, 12], [15, 22]]";
-is-deeply merge([[1,2], [5,6], [5,5], [2,5], [7,8], [3,3]]),
- [[1,6], [7,8]];
+is-deeply merge([[1, 3], [5, 9], [7, 8], [3, 4]]),
+ [[1, 4], [5, 9]],
+ "[[1, 3], [5, 9], [7, 8], [3, 4]] = [[1, 4], [5, 9]]";
+
+is-deeply merge([[1, 2], [5, 6], [5, 5], [2, 5], [7, 8], [3, 3]]),
+ [[1, 6], [7, 8]],
+ "[[1, 2], [5, 6], [5, 5], [2, 5], [7, 8], [3, 3]] = [[1, 6], [7, 8]]";
+
+is-deeply merge([[1, 3], [5, 7], [-1, 7]]),
+ [[-1, 7], ],
+ "[[1, 3], [5, 7], [-1, 7]] = [[-1, 7], ]";
sub merge(@array) {
- @array = @array.sort({ $^a[0] <=> $^b[0] ||
- $^a[1] <=> $^b[1] });
+ @array = @array.sort({ $^a[0] <=> $^b[0] });
my @merged = @array.shift;
@@ -23,7 +33,7 @@ sub merge(@array) {
my @m = @merged.pop.flat;
my @a = @array.shift.flat;
- if (@m[1] >= @a[0]) {
+ if @m[1] >= @a[0] {
@merged.push([@m[0], (@a[1], @m[1]).max]);
}
diff --git a/challenge-050/mark-anderson/raku/ch-2.p6 b/challenge-050/mark-anderson/raku/ch-2.p6
index 678ecc2d99..28e02c8c9e 100644
--- a/challenge-050/mark-anderson/raku/ch-2.p6
+++ b/challenge-050/mark-anderson/raku/ch-2.p6
@@ -1,8 +1,25 @@
#!/usr/bin/env perl6
-my @L = [2, 6, 1, 3];
+use Test;
-@L ==>
-grep { $_ < @L.elems } ==> # skip numbers that aren't possible
-first { @L.grep(* > $_).elems == $_ } ==> # I'm trusting there can only be 1
-say();
+plan 7;
+
+is noble((1 .. 8)), 4, "(1 .. 8) = 4";
+is noble((1, 6, 3, 2)), 2, "(1, 6, 3, 2) = 2";
+is noble((3, 5, 5, 5, 5)), (), "(3, 5, 5, 5, 5) = ()";
+is noble((4, 5, 5, 5, 5)), 4, "(4, 5, 5, 5, 5) = 4";
+is noble((1, 5, 5, 2, 3, 6)), 3, "(1, 5, 5, 2, 3, 6) = 3";
+is noble((1, 5, 2, 6, 7, 4)), (), "(1, 5, 2, 6, 7, 4) = ()";
+is noble((1, 2, 4, 5, 6, 7, 8, 9, 22)), 5, "(1, 2, 4, 5, 6, 7, 8, 9, 22) = 5";
+
+sub noble(@L is copy) {
+ @L = @L.sort;
+
+ for @L.kv -> $k, $v {
+ my @rest = @L[$k+1 .. @L.end];
+ last if $v > @rest;
+ return $v if @rest.grep(* > $v) == $v;
+ }
+
+ return ();
+}