aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-02-16 09:34:07 +0000
committerGitHub <noreply@github.com>2022-02-16 09:34:07 +0000
commitdafba55fd28944345f736ab47e5ff60a0570b449 (patch)
treecd5d8b50de2f395e5fc5212ee3faf3964cfcfad8
parent40464b6164181aff84d4124e7cbcf1687d0a0fa2 (diff)
parent712c3c3b0d3cc9c06e24047637dc0c97dbee57d7 (diff)
downloadperlweeklychallenge-club-dafba55fd28944345f736ab47e5ff60a0570b449.tar.gz
perlweeklychallenge-club-dafba55fd28944345f736ab47e5ff60a0570b449.tar.bz2
perlweeklychallenge-club-dafba55fd28944345f736ab47e5ff60a0570b449.zip
Merge pull request #5654 from andemark/branch-for-challenge-152
initial 152
-rw-r--r--challenge-152/mark-anderson/raku/ch-1.raku11
-rw-r--r--challenge-152/mark-anderson/raku/ch-2.raku25
2 files changed, 36 insertions, 0 deletions
diff --git a/challenge-152/mark-anderson/raku/ch-1.raku b/challenge-152/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..bfe8e1272e
--- /dev/null
+++ b/challenge-152/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/env raku
+
+use Test;
+
+is triangle-sum([ [1], [5,3], [2,3,4], [7,1,0,2], [6,4,5,2,8] ]), 8;
+is triangle-sum([ [5], [2,3], [4,1,5], [0,1,2,3], [7,2,4,1,9] ]), 9;
+
+sub triangle-sum(@a)
+{
+ [+] @a>>.min;
+}
diff --git a/challenge-152/mark-anderson/raku/ch-2.raku b/challenge-152/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..c325a98db0
--- /dev/null
+++ b/challenge-152/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/env raku
+
+use Test;
+
+is rectangle-area((-1,0), (2,2), (0,-1), (4,4)), 22;
+is rectangle-area((-3,-1), (1,3), (-1,-3), (2,2)), 25;
+is rectangle-area((1,1), (2,2), (3,3), (4,4)), 2;
+is rectangle-area((-1,-1), (-2,-2), (1,1), (2,2)), 2;
+is rectangle-area((1,1), (2,2), (-1,-1), (-2,-2)), 2;
+is rectangle-area((3,3), (4,4), (1,1), (2,2)), 2;
+is rectangle-area((4,2), (7,5), (2,3), (5,7)), 19;
+
+sub rectangle-area(+@p)
+{
+ my $p = @p.map(|*);
+
+ my $int = flat ($p[0,4], $p[1,5])>>.max, ($p[2,6], $p[3,7])>>.min;
+
+ my $int-x = [-] $int[2,0];
+ my $int-y = [-] $int[3,1];
+
+ my $int-area = $int-x|$int-y < 0 ?? 0 !! $int-x * $int-y;
+
+ ([-] $p[0,2]) * ([-] $p[1,3]) + ([-] $p[4,6]) * ([-] $p[5,7]) - $int-area;
+}