diff options
| author | Yet Ebreo <yet.ebreo@gmail.com> | 2021-03-09 23:53:12 +0800 |
|---|---|---|
| committer | Yet Ebreo <yet.ebreo@gmail.com> | 2021-03-09 23:53:12 +0800 |
| commit | 3654bd7723a2df65ee7147eefbd2aad1f57e6d3d (patch) | |
| tree | 49557f629dd883860b580f56facc17e7b918bf9f | |
| parent | 9b2925404b21fc21207b310c152d11c894bb90cd (diff) | |
| download | perlweeklychallenge-club-3654bd7723a2df65ee7147eefbd2aad1f57e6d3d.tar.gz perlweeklychallenge-club-3654bd7723a2df65ee7147eefbd2aad1f57e6d3d.tar.bz2 perlweeklychallenge-club-3654bd7723a2df65ee7147eefbd2aad1f57e6d3d.zip | |
Add perl solution ch#101-2
| -rw-r--r-- | challenge-101/yet-ebreo/perl/ch-2.pl | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/challenge-101/yet-ebreo/perl/ch-2.pl b/challenge-101/yet-ebreo/perl/ch-2.pl new file mode 100644 index 0000000000..f02c526d06 --- /dev/null +++ b/challenge-101/yet-ebreo/perl/ch-2.pl @@ -0,0 +1,24 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use feature qw(say); + +my @points = ( [0,1], + [2,0], + [-6,0] + ); + +sub is_origin_in { + my (@p,$x) = @{+pop}; + my $m = $p[0][1] * $p[2][0] - $p[0][0] * $p[2][1]; + my $n = $p[0][0] * $p[1][1] - $p[0][1] * $p[1][0]; + + return (($m < 0) != ($n < 0)) ? + 0: + ( $x = $p[1][0] * $p[2][1] - $p[1][1] * $p[2][0] + $p[0][1] * ($p[2][0] - $p[1][0]) + $p[0][0] * ($p[1][1] - $p[2][1])) < 0 ? + ($m <= 0 && $m + $n >= $x) : + ($m >= 0 && $m + $n <= $x); +} + +say is_origin_in (\@points)
\ No newline at end of file |
