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
31
32
33
34
|
#!/usr/bin/perl
use warnings;
use strict;
use experimental qw( signatures );
sub mad(@ints) {
my @sorted = sort { $a <=> $b } @ints;
my @mad = ($sorted[1] - $sorted[0]);
for my $i (1 .. $#sorted) {
my $diff = abs($sorted[$i] - $sorted[ $i - 1 ]);
if ($diff < $mad[0]) {
@mad = ($diff);
}
if ($diff == $mad[0]) {
push @mad, [@sorted[$i - 1, $i]];
}
}
return @mad[1 .. $#mad]
}
use Test2::V0;
plan(3);
use experimental qw( signatures ); # Needed again after Test2::V0;
sub bagobags(@elements) {
bag {
item(bag { item($_) for @$_; end() }) for @elements;
end();
}
}
is [mad(4, 1, 2, 3)], bagobags([1,2], [2,3], [3,4]), 'Example 1';
is [mad(1, 3, 7, 11, 15)], bagobags([1,3]), 'Example 2';
is [mad(1, 5, 3, 8)], bagobags([1,3], [3,5]), 'Example 3';
|