aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-08-14 09:45:26 +0100
committerGitHub <noreply@github.com>2025-08-14 09:45:26 +0100
commitb1b15c7e0f85138f785dc080aac288d31ec86d6e (patch)
tree09adf1a64ef3a774e1d0c503b658e65db26b0181
parent8027478122404d40ecd97162fba0fbb15c343123 (diff)
parent8fabce612cb5c11395cd83fd3061d5bf60f79834 (diff)
downloadperlweeklychallenge-club-b1b15c7e0f85138f785dc080aac288d31ec86d6e.tar.gz
perlweeklychallenge-club-b1b15c7e0f85138f785dc080aac288d31ec86d6e.tar.bz2
perlweeklychallenge-club-b1b15c7e0f85138f785dc080aac288d31ec86d6e.zip
Merge pull request #12516 from kjetillll/challenge-334-kjetillll
https://theweeklychallenge.org/blog/perl-weekly-challenge-334/
-rw-r--r--challenge-334/kjetillll/perl/ch-1.pl8
-rw-r--r--challenge-334/kjetillll/perl/ch-2.pl24
2 files changed, 32 insertions, 0 deletions
diff --git a/challenge-334/kjetillll/perl/ch-1.pl b/challenge-334/kjetillll/perl/ch-1.pl
new file mode 100644
index 0000000000..865c6cf2c2
--- /dev/null
+++ b/challenge-334/kjetillll/perl/ch-1.pl
@@ -0,0 +1,8 @@
+sub f { eval join '+', @_[ shift .. shift ] }
+
+print pop(@$_) == f(@$_) ? "ok\n" : "err\n" for
+[ 0, 2 => -2, 0, 3, -5, 2, -1 => 1],
+[ 1, 3 => 1, -2, 3, -4, 5 => -3],
+[ 3, 4 => 1, 0, 2, -1, 3 => 2],
+[ 0, 3 => -5, 4, -3, 2, -1, 0 => -2],
+[ 0, 2 => -1, 0, 2, -3, -2, 1 => 1],
diff --git a/challenge-334/kjetillll/perl/ch-2.pl b/challenge-334/kjetillll/perl/ch-2.pl
new file mode 100644
index 0000000000..6f21d7f8ba
--- /dev/null
+++ b/challenge-334/kjetillll/perl/ch-2.pl
@@ -0,0 +1,24 @@
+
+sub mandist { my($x1, $y1, $x2, $y2) = @_; abs( $x1 - $x2 ) + abs( $y1 - $y2 ) }
+
+sub f {
+ my($x, $y, @p) = @_;
+ my $i = 0;
+ (
+ map { $$_{index} }
+ sort { $$a{mandist} <=> $$b{mandist} || $$a{index} <=> $$b{index} }
+ map { $$_{mandist} = mandist( $x, $y, @$_{qw(px py)} ); $_ }
+ grep { $$_{px} == $x or $$_{py} == $y }
+ map { {px => $$_[0], py => $$_[1], index => $i++} }
+ @p
+ )[0] // -1
+
+}
+
+print pop(@$_) == f(@$_) ? "ok\n" : "err\n" for
+[ 3, 4 => [1, 2], [3, 1], [2, 4], [2, 3] => 2 ],
+[ 2, 5 => [3, 4], [2, 3], [1, 5], [2, 5] => 3 ],
+[ 1, 1 => [2, 2], [3, 3], [4, 4] => -1 ],
+[ 0, 0 => [0, 1], [1, 0], [0, 2], [2, 0] => 0 ],
+[ 5, 5 => [5, 6], [6, 5], [5, 4], [4, 5] => 0 ],
+