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 }
|
10
d05/d05_2.py
10
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
|
n=0
|
||||||
def incr(x,y):
|
def incr(x,y):
|
||||||
global n
|
global n
|
||||||
grid[x][y]+=1
|
grid[x][y]+=1
|
||||||
if grid[x][y]==2:
|
if grid[x][y]==2:
|
||||||
n+=1
|
n+=1
|
||||||
for ((x1,y1),(x2,y2)) in L:
|
for ((x1,y1),(x2,y2)) in eval(__import__("sys").stdin.read()):
|
||||||
if x1 == x2:
|
if x1 == x2:
|
||||||
for y in range(min(y1,y2), max(y1,y2)+1):
|
for y in range(min(y1,y2), max(y1,y2)+1):
|
||||||
incr(x1,y)
|
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):
|
for x in range(min(x1,x2), max(x1,x2)+1):
|
||||||
incr(x,y1)
|
incr(x,y1)
|
||||||
else:
|
else:
|
||||||
r = abs(x1-x2)
|
|
||||||
i = sign(x2-x1)
|
i = sign(x2-x1)
|
||||||
j = sign(y2-y1)
|
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)
|
incr(x1+a*i,y1+a*j)
|
||||||
print(n)
|
print(n)
|
||||||
|
|
Loading…
Reference in New Issue