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

53 lines
783 B
Awk

BEGIN{ RS = "" }
NR==1{
for(i=1;i<=NF;i++) m[i] = $i
}
NR==2{
for(i=1;i<=NF;i++){
if($i~"x" || $i~"y") f[fp++] = $i
}
}
END{
for(fi in f){
j=0
for(i in m){
split(m[i],arr,",")
x = arr[1]; y = arr[2]
if(f[fi]~"x"){
fx = f[fi]
sub("x=","",fx)
if(x-fx>0) x = 2*fx-x
}
else if(f[fi]~"y"){
fy = f[fi]
sub("y=","",fy)
if(y-fy>0) y = 2*fy-y
}
if(!p[x,y]){
p[x,y] = 1
nm[j++] = x "," y
}
}
delete m; delete p
for(i in nm) m[i] = nm[i]
delete nm
if(fi==0) print "part 1:", j
}
for(i in m){
split(m[i],arr,",")
x = arr[1]; y = arr[2]
if(x>maxx) maxx=x
if(y>maxy) maxy=y
p[x,y] = 1
}
print "part 2:"
for(y=0;y<=maxy;y++){
for(x=0;x<=maxx;x++){
printf "%c", p[x,y] ? "#" : "."
}
print ""
}
}