36 lines
740 B
Perl
Executable File
36 lines
740 B
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
my $sum;
|
|
|
|
sub ss {
|
|
my ($expr, $start, $end) = @_;
|
|
$start = 0 if $start < 0;
|
|
$end = length $expr if $end > length $expr;
|
|
my $r = substr($expr, $start, $end-$start);
|
|
return $r;
|
|
}
|
|
|
|
sub borders {
|
|
my ($a,$c,$b) = @_;
|
|
while($c =~ /\d+/g) {
|
|
my $num = $&;
|
|
my $edge = "";
|
|
$edge .= ss($a, $-[0]-1, $+[0]+1) if defined $a;
|
|
$edge .= ss($c, $-[0]-1, $-[0]);
|
|
$edge .= ss($c, $+[0], $+[0]+1);
|
|
$edge .= ss($b, $-[0]-1, $+[0]+1) if defined $b;
|
|
$sum += $num if $edge =~ /[^0-9.]/;
|
|
}
|
|
}
|
|
|
|
|
|
my @lines = <>;
|
|
map { chomp } @lines;
|
|
|
|
borders(undef, $lines[0], $lines[1]);
|
|
for my $x (0 .. $#lines-2) {
|
|
borders(@lines[$x,$x+1,$x+2]);
|
|
}
|
|
borders($lines[$#lines-1], $lines[$#lines], undef);
|
|
print "$sum\n";
|