OpenSCAD visualisation of 2021 day 22
This commit is contained in:
parent
8d0a121f02
commit
d5ada91d13
|
@ -0,0 +1,24 @@
|
||||||
|
with open('day22input', 'r') as file:
|
||||||
|
inputlines = file.read().strip().split('\n')
|
||||||
|
|
||||||
|
input_steps = []
|
||||||
|
for line in inputlines:
|
||||||
|
state, _, coords = line.partition(' ')
|
||||||
|
coords_str = [token[2:] for token in coords.split(',')]
|
||||||
|
coords = tuple(tuple(int(i) for i in s.partition('..')[::2]) for s in coords_str)
|
||||||
|
input_steps.append((state, coords))
|
||||||
|
|
||||||
|
def coord_t_to_cube(tup):
|
||||||
|
(x0,x1), (y0,y1), (z0,z1) = tup
|
||||||
|
return f'translate([{x0},{y0},{z0}]) cube([{x1-x0},{y1-y0},{z1-z0}]);'
|
||||||
|
|
||||||
|
scadlist = []
|
||||||
|
for onoff, tup in input_steps:
|
||||||
|
operator = {'on':'union()', 'off':'difference()'}[onoff]
|
||||||
|
cube = coord_t_to_cube(tup)
|
||||||
|
scadlist.insert(0, operator+'{')
|
||||||
|
scadlist.append(cube+'}')
|
||||||
|
scadstr = '\n'.join(scadlist)
|
||||||
|
|
||||||
|
with open('day22.scad', 'w') as file:
|
||||||
|
file.write(scadstr)
|
Loading…
Reference in New Issue