Solução Perl. A primeira linha de saída é diferente da sua (faltando -
após &
na saída requerida?).
#!/usr/bin/perl
use warnings;
use strict;
my $first = 1;
my @line;
sub output {
print join('&', @line), "\n" unless $first;
}
my $previous = q();
while (<>) {
chomp;
if (s/.*: //) {
output();
print "$_:";
$previous = q();
@line = ();
} else {
my ($prefix, $suffix) = split /-/;
if ($prefix ne $previous) {
push @line, "$prefix-$suffix";
} else {
push @line, "-$suffix";
}
$previous = $prefix;
}
undef $first;
}
output(); # Don't forget to output the last line.