53 lines
783 B
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 ""
|
|
}
|
|
}
|