aboutsummaryrefslogtreecommitdiff
path: root/challenge-263/e-choroba/perl/ch-2.pl
blob: 83e49825a2b6bf7002e600dba1d191206e7f388a (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
#!/usr/bin/perl
use warnings;
use strict;
use experimental qw( signatures );

sub merge_items($items1, $items2) {
    my %merge;
    for my $tuple (@$items1, @$items2) {
        $merge{ $tuple->[0] } += $tuple->[1];
    }
    return [map [$_ => $merge{$_}], keys %merge]
}

use Test2::V0;
plan 3;

is merge_items([[1, 1], [2, 1], [3, 2]],
               [[2, 2], [1, 3]]),
    bag { item $_ for [1, 4], [2, 3], [3, 2] },
    'Example 1';

like merge_items([[1, 2], [2, 3], [1, 3], [3, 2] ],
                 [[3, 1], [1, 3] ]),
    bag { item $_ for [1, 8], [2, 3], [3, 3] },
    'Example 2';

is merge_items([[1, 1], [2, 2], [3, 3]],
               [[2, 3], [2, 4]]),
    bag { item $_ for [1, 1], [2, 9], [3, 3] },
    'Example 3';