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
|
# Test: perl6 ch-1.p6 "[2,7], [3,9], [10,12], [15,19], [18,22]"
sub MAIN(Str $lists) {
my @values =
$lists.subst(/<[\s\[\]]>/, '', :g).split(',')>>.Int;
my $i = 0;
# Loop through the list items
while ($i < @values.elems - 3) {
# Compare the last element of the list to the
# first element of the next list
if ( @values[$i+1] >= @values[$i+2] &&
@values[$i] <= @values[$i+3] ) {
# Create new list indexes
my @new_list = (
min(@values[$i], @values[$i+2]),
max(@values[$i+1], @values[$i+3])
);
@values.splice($i, 4, @new_list);
} else {
$i = $i + 2;
}
}
# Print the values
$i = 0;
my @v_string;
while ($i < @values) {
@v_string.push(
'[' ~ @values[$i++] ~ ', ' ~
@values[$i++] ~ "]"
);
}
say join ', ', @v_string;
}
|