aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-12-28 00:42:12 +0000
committerGitHub <noreply@github.com>2023-12-28 00:42:12 +0000
commit62898430a8d149e79455890254e6929d4997e15e (patch)
tree15854eefc7d3386e938e736e5fde2703d0ff5e01
parentec31914b19127e2702dcf4f105d307e8dd436235 (diff)
parent4fd5b6ba6899c9ec1ce3aa3acf84850ce7be6da8 (diff)
downloadperlweeklychallenge-club-62898430a8d149e79455890254e6929d4997e15e.tar.gz
perlweeklychallenge-club-62898430a8d149e79455890254e6929d4997e15e.tar.bz2
perlweeklychallenge-club-62898430a8d149e79455890254e6929d4997e15e.zip
Merge pull request #9306 from kjetillll/challenge-248-kjetillll
https://theweeklychallenge.org/blog/perl-weekly-challenge-248/
-rw-r--r--challenge-248/kjetillll/perl/ch-1.pl15
-rw-r--r--challenge-248/kjetillll/perl/ch-2.pl49
2 files changed, 64 insertions, 0 deletions
diff --git a/challenge-248/kjetillll/perl/ch-1.pl b/challenge-248/kjetillll/perl/ch-1.pl
new file mode 100644
index 0000000000..217119d85c
--- /dev/null
+++ b/challenge-248/kjetillll/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/perl
+#https://theweeklychallenge.org/blog/perl-weekly-challenge-248/
+use strict; use warnings;
+use Test::More tests=>2;
+is_deeply [ SD("loveleetcode", "e") ] => [ 3,2,1,0,1,0,0,1,2,2,1,0 ];
+is_deeply [ SD("aaab", "b") ] => [ 3,2,1,0 ];
+
+sub SD {
+ my($str,$char)=@_;
+ my @s = split//, $str;
+ my $dist = sub { my $d = 9e9; map $_ eq $char ? ($d=0) : ++$d, @_ };
+ my @after = &$dist( @s );
+ my @before = reverse &$dist( reverse @s );
+ map $after[$_] < $before[$_] ? $after[$_] : $before[$_], 0 .. $#s;
+}
diff --git a/challenge-248/kjetillll/perl/ch-2.pl b/challenge-248/kjetillll/perl/ch-2.pl
new file mode 100644
index 0000000000..a24488074e
--- /dev/null
+++ b/challenge-248/kjetillll/perl/ch-2.pl
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+#https://theweeklychallenge.org/blog/perl-weekly-challenge-248/
+use strict; use warnings; use Test::More tests=>2;
+
+is_deeply [ sum2x2(
+ [1, 2, 3, 4],
+ [5, 6, 7, 8],
+ [9, 10, 11, 12] )
+ ] => [
+ [14, 18, 22],
+ [30, 34, 38]
+ ];
+
+is_deeply [ sum2x2(
+ [1, 0, 0, 0],
+ [0, 1, 0, 0],
+ [0, 0, 1, 0],
+ [0, 0, 0, 1] )
+ ] => [
+ [2, 1, 0],
+ [1, 2, 1],
+ [0, 1, 2]
+ ];
+
+sub slide_matrix (&$$$) {
+ my($sub, $w, $h, $m) = @_;
+ for my $i ( 0 .. @$m - $h ) {
+ for my $j ( 0 .. @{ $$m[0] } - $w ){
+ my @sm;
+ for my $x ( 0 .. $w-1 ) {
+ for my $y ( 0 .. $h-1 ) {
+ $sm[$x][$y] = $$m[$i+$x][$j+$y]
+ }
+ }
+ &$sub(\@sm,$i,$j)
+ }
+ }
+}
+
+sub sum2x2 {
+ my @matrix = @_;
+ my @result;
+ slide_matrix {
+ my($subm, $i, $j) = @_;
+ push @{ $result[$i] //= [] }, $$subm[0][0] + $$subm[0][1]
+ + $$subm[1][0] + $$subm[1][1];
+ } 2, 2, \@matrix;
+ @result
+}