diff --git a/2021/day22.py b/2021/day22.py new file mode 100644 index 0000000..edc8a8e --- /dev/null +++ b/2021/day22.py @@ -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)