aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-04-03 15:02:47 +0100
committerGitHub <noreply@github.com>2024-04-03 15:02:47 +0100
commite00d9e334fea3ef28b04c6e640986a3f4769583f (patch)
tree88e7e77d8501994f275cd469dbe861d231c7909d
parent8b563869edc587a9447d98e26acc57f11019283f (diff)
parentdecb52e778fa783e06a508d52d599df746c743ac (diff)
downloadperlweeklychallenge-club-e00d9e334fea3ef28b04c6e640986a3f4769583f.tar.gz
perlweeklychallenge-club-e00d9e334fea3ef28b04c6e640986a3f4769583f.tar.bz2
perlweeklychallenge-club-e00d9e334fea3ef28b04c6e640986a3f4769583f.zip
Merge pull request #9866 from kjetillll/challenge-263-kjetillll
https://theweeklychallenge.org/blog/perl-weekly-challenge-263/
-rw-r--r--challenge-263/kjetillll/perl/ch-1.pl26
-rw-r--r--challenge-263/kjetillll/perl/ch-2.pl30
2 files changed, 56 insertions, 0 deletions
diff --git a/challenge-263/kjetillll/perl/ch-1.pl b/challenge-263/kjetillll/perl/ch-1.pl
new file mode 100644
index 0000000000..e2cc2dda88
--- /dev/null
+++ b/challenge-263/kjetillll/perl/ch-1.pl
@@ -0,0 +1,26 @@
+use strict; use warnings; use Test::More;
+
+sub target_index { my $k = pop; my @s = sort {$a<=>$b} @_; grep $s[$_]==$k, 0..$#s }
+
+my @tests = (
+ {
+ list => [1, 5, 3, 2, 4, 2],
+ k => 2,
+ want => [1, 2]
+ },
+ {
+ list => [1, 2, 4, 3, 5],
+ k => 6,
+ want => []
+ },
+ {
+ list => [5, 3, 2, 4, 2, 1],
+ k => 4,
+ want => [4]
+ }
+);
+for my $test (@tests) {
+ my @got = target_index( @{$$test{list}}, $$test{k} );
+ is_deeply(\@got, $$test{want});
+}
+done_testing;
diff --git a/challenge-263/kjetillll/perl/ch-2.pl b/challenge-263/kjetillll/perl/ch-2.pl
new file mode 100644
index 0000000000..bb681736e7
--- /dev/null
+++ b/challenge-263/kjetillll/perl/ch-2.pl
@@ -0,0 +1,30 @@
+use strict; use warnings; use Test::More;
+
+sub merge_items {
+ my %idsum;
+ $idsum{ $$_[0] } += $$_[1] for map @$_, @_;
+ [ map [ $_, $idsum{$_} ], sort {$a<=>$b} keys %idsum ]
+}
+
+my @tests = (
+ {
+ items1 => [ [1,1], [2,1], [3,2] ],
+ items2 => [ [2,2], [1,3] ],
+ want => [ [1,4], [2,3], [3,2] ]
+ },
+ {
+ items1 => [ [1,2], [2,3], [1,3], [3,2] ],
+ items2 => [ [3,1], [1,3] ],
+ want => [ [1,8], [2,3], [3,3] ]
+ },
+ {
+ items1 => [ [1,1], [2,2], [3,3] ],
+ items2 => [ [2,3], [2,4] ],
+ want => [ [1,1], [2,9], [3,3] ]
+ }
+);
+for my $test (@tests) {
+ my $got = merge_items( @$test{'items1', 'items2'} );
+ is_deeply( $got, $$test{want} );
+}
+done_testing;