/
ch-1.p6
37 lines (30 loc) · 818 Bytes
/
ch-1.p6
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
35
36
37
#!/usr/bin/env perl6
use v6.d;
multi sub MAIN(*@) is hidden-from-USAGE {
say $*USAGE;
say "\nERROR: Invalid k, must be > 0 !!!";
}
multi sub MAIN(Int :$K where * > 0 = 3, Int :$S = 10) {
my Int @L = (1..50).pick($S).sort.reverse;
say "\@L = [" ~ @L.join(", ") ~ "]";
my $matched = find-match($K, @L);
(@$matched.elems > 0)
??
(@$matched.join("\n").say)
!!
(say "Oops, none matched.");
}
sub find-match(Int $K, @L where .all ~~ Int) {
my $matched = [];
my $S = @L.elems;
my $fmt = "%2s,%2s => (%2s - %2s) => %d";
for 0 .. --$S -> $i {
for $i+1 .. $S -> $j {
my $k = @L[$i] - @L[$j];
if $k == $K {
$matched.push: sprintf($fmt, $i, $j, @L[$i], @L[$j], $k);
}
}
}
return $matched;
}