diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-08-14 09:45:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-14 09:45:26 +0100 |
| commit | b1b15c7e0f85138f785dc080aac288d31ec86d6e (patch) | |
| tree | 09adf1a64ef3a774e1d0c503b658e65db26b0181 | |
| parent | 8027478122404d40ecd97162fba0fbb15c343123 (diff) | |
| parent | 8fabce612cb5c11395cd83fd3061d5bf60f79834 (diff) | |
| download | perlweeklychallenge-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.pl | 8 | ||||
| -rw-r--r-- | challenge-334/kjetillll/perl/ch-2.pl | 24 |
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 ], + |
