my $sum;
while (<>) {
- my @seq = /-?\d+/g;
- my @rest;
+ my @seq = reverse /-?\d+/g;
while (grep $_, @seq) {
- push @rest, $seq[0];
- for my $i (0 .. $#seq-1) {
- $seq[$i] = $seq[$i+1]-$seq[$i];
- }
- pop @seq;
+ $seq[$_] = $seq[$_+1]-$seq[$_] for 0 .. $#seq-1;
+ $sum += pop @seq;
}
- my $s = 0;
- for (reverse @rest) {
- $s = $_ - $s;
- }
- $sum += $s;
}
say $sum;