diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-12-28 00:42:12 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-28 00:42:12 +0000 |
| commit | 62898430a8d149e79455890254e6929d4997e15e (patch) | |
| tree | 15854eefc7d3386e938e736e5fde2703d0ff5e01 | |
| parent | ec31914b19127e2702dcf4f105d307e8dd436235 (diff) | |
| parent | 4fd5b6ba6899c9ec1ce3aa3acf84850ce7be6da8 (diff) | |
| download | perlweeklychallenge-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.pl | 15 | ||||
| -rw-r--r-- | challenge-248/kjetillll/perl/ch-2.pl | 49 |
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 +} |
