adventofcode2022/day15/svg.py

27 lines
950 B
Python

data = []
for line in open("input"):
words = line.replace(":", "").replace(",","").split()
coords = [int(w[w.index('=')+1:]) for w in words if '=' in w]
data.append(coords)
import colorsys
def hsl(h,s,l):
r,g,b = colorsys.hls_to_rgb(h/360,l,s)
return int(r*255),int(g*255),int(b*255)
colors = []
for i in range(len(data)):
hue = i*300/len(data)
colors.append("#%02x%02x%02x" % hsl(hue, 1, .5))
print('<svg width="1000" height="1000" viewBox="0 0 4000000 4000000" xmlns="http://www.w3.org/2000/svg">')
for i,(sx,sy,bx,by) in enumerate(data):
dx = abs(sx-bx)
dy = abs(sy-by)
d = dx+dy
path = [(sx+d,sy),(sx,sy+d),(sx-d,sy),(sx,sy-d)]
s = "M %d %d" % (path[-1]) + " ".join("L %d %d" % (x,y) for x,y in path)
print('<path d="%s" style="fill:%s;fill-opacity:0.5;stroke:#000;stroke-width:5000px" />' % (s,colors[i]))
#print('<circle cx="3257428" cy="2573243" r="10000" fill="red" />')
print('</svg>')