day 5 with awk
This commit is contained in:
parent
f0f10a53e5
commit
1b266b322c
|
@ -0,0 +1,23 @@
|
|||
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 }
|
12
d05/d05_2.py
12
d05/d05_2.py
|
@ -1,15 +1,12 @@
|
|||
import sys
|
||||
W,H = 1000,1000
|
||||
grid = [ [ 0 for _ in range(W) ] for _ in range(H) ]
|
||||
L = eval(sys.stdin.read())
|
||||
sign = lambda x: (1, -1)[x<0]
|
||||
sign = lambda x: (1,-1)[x<0]
|
||||
grid = [[0 for _ in range(1000)] for _ in range(1000)]
|
||||
n=0
|
||||
def incr(x,y):
|
||||
global n
|
||||
grid[x][y]+=1
|
||||
if grid[x][y]==2:
|
||||
n+=1
|
||||
for ((x1,y1),(x2,y2)) in L:
|
||||
for ((x1,y1),(x2,y2)) in eval(__import__("sys").stdin.read()):
|
||||
if x1 == x2:
|
||||
for y in range(min(y1,y2), max(y1,y2)+1):
|
||||
incr(x1,y)
|
||||
|
@ -17,9 +14,8 @@ for ((x1,y1),(x2,y2)) in L:
|
|||
for x in range(min(x1,x2), max(x1,x2)+1):
|
||||
incr(x,y1)
|
||||
else:
|
||||
r = abs(x1-x2)
|
||||
i = sign(x2-x1)
|
||||
j = sign(y2-y1)
|
||||
for a in range(r+1):
|
||||
for a in range(abs(x1-x2)+1):
|
||||
incr(x1+a*i,y1+a*j)
|
||||
print(n)
|
||||
|
|
Loading…
Reference in New Issue