24 lines
515 B
Awk
24 lines
515 B
Awk
|
BEGIN { FS = ",| -> " }
|
||
|
function min(a, b) { return a < b ? a : b }
|
||
|
function max(a, b) { return a > b ? a : b }
|
||
|
function abs(a) { return a < 0 ? -a : a }
|
||
|
function sign(a) { return a < 0 ? -1 : 1 }
|
||
|
$1 == $3 {
|
||
|
for (i = min($2, $4); i <= max($2, $4); i++)
|
||
|
n+= (++floor[$1, i] == 2)
|
||
|
next
|
||
|
}
|
||
|
$2 == $4 {
|
||
|
for (i = min($1, $3); i <= max($1, $3); i++)
|
||
|
n+= (++floor[i, $2] == 2)
|
||
|
next
|
||
|
}
|
||
|
{
|
||
|
i = sign($3-$1)
|
||
|
j = sign($4-$2)
|
||
|
for (a = 0; a <= abs($3-$1); a++)
|
||
|
n+= (++floor[$1+i*a, $2+a*j] == 2)
|
||
|
next
|
||
|
}
|
||
|
END { print n }
|