advent-of-code/12021/05/05_2.awk

65 lines
816 B
Awk

{
c1 = $1
c2 = $3
split(c1,p1,",")
split(c2,p2,",")
x1 = p1[1]; y1=p1[2]
x2 = p2[1]; y2=p2[2]
# print x1, y1, x2, y2
if(y2>y1 && x2>x1){
x=x1
for(y=y1;y<=y2;y++){
covers[x,y]++
x++
}
}
else if(y2>y1 && x2<x1){
x=x1
for(y=y1;y<=y2;y++){
covers[x,y]++
x--
}
}
else if(y2<y1 && x2>x1){
x=x1
for(y=y1;y>=y2;y--){
covers[x,y]++
x++
}
}
else if(y2<y1 && x2<x1){
x=x1
for(y=y1;y>=y2;y--){
covers[x,y]++
x--
}
}
if(x1==x2){ # horizontal
if(y2>y1){
for(y=y1;y<=y2;y++){
covers[x1,y] += 1
}
}else{
for(y=y1;y>=y2;y--){
covers[x1,y] += 1
}
}
}
else if(y1==y2){
if(x2>x1){
for(x=x1;x<=x2;x++) covers[x,y1] +=1
}else{
for(x=x1;x>=x2;x--) covers[x,y1] +=1
}
}
}
END{
count = 0
for(i in covers){
count += covers[i]>1
}
print count
}