aboutsummaryrefslogtreecommitdiff
path: root/challenge-263/kjetillll/perl/ch-2.pl
blob: bb681736e7f1a1960a33c3b6cc610ed62939f27b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;