aboutsummaryrefslogtreecommitdiff
path: root/challenge-101/mark-anderson/raku/ch-2.raku
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-02-23 18:33:16 +0000
committerGitHub <noreply@github.com>2021-02-23 18:33:16 +0000
commitc6291ad8ffaef88ddde809deddc53a36a8a94ded (patch)
treedc6fcf7d7da41735e15d3d97193ef749547352fb /challenge-101/mark-anderson/raku/ch-2.raku
parent897279e7e246ae873e908a08cdd0e69e6425207e (diff)
parent826573f083db1ae1a9274934d222bbe416d2b355 (diff)
downloadperlweeklychallenge-club-c6291ad8ffaef88ddde809deddc53a36a8a94ded.tar.gz
perlweeklychallenge-club-c6291ad8ffaef88ddde809deddc53a36a8a94ded.tar.bz2
perlweeklychallenge-club-c6291ad8ffaef88ddde809deddc53a36a8a94ded.zip
Merge pull request #3602 from andemark/branch-for-challenge-101
Branch for challenge 101
Diffstat (limited to 'challenge-101/mark-anderson/raku/ch-2.raku')
-rw-r--r--challenge-101/mark-anderson/raku/ch-2.raku35
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-101/mark-anderson/raku/ch-2.raku b/challenge-101/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..177bb5f6fd
--- /dev/null
+++ b/challenge-101/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,35 @@
+#!/usr/bin/env raku
+
+# With help from https://www.geeksforgeeks.org/check-whether-a-given-point-lies-inside-a-triangle-or-not/
+
+use Test;
+plan 3;
+
+nok contains-origin((0, 1), ( 1, 0), ( 2, 2));
+ok contains-origin((1, 1), (-1, 1), ( 0, -3));
+ok contains-origin((0, 1), ( 2, 0), (-6, 0));
+
+class point
+{
+ has Int $.x;
+ has Int $.y;
+}
+
+sub area($a, $b, $c)
+{
+ abs(($a.x * ($b.y - $c.y)) +
+ ($b.x * ($c.y - $a.y)) +
+ ($c.x * ($a.y - $b.y))) / 2;
+}
+
+sub contains-origin($A, $B, $C)
+{
+ my $a = point.new(x => $A[0], y => $A[1]);
+ my $b = point.new(x => $B[0], y => $B[1]);
+ my $c = point.new(x => $C[0], y => $C[1]);
+ my $p = point.new(:0x, :0y);
+
+ .UInt given area($a, $b, $c) == area($a, $b, $p) +
+ area($b, $c, $p) +
+ area($a, $c, $p);
+}