diff --git a/challenges/2021/22-reactorReboot/README.md b/challenges/2021/22-reactorReboot/README.md index 0665562..66c4ea1 100644 --- a/challenges/2021/22-reactorReboot/README.md +++ b/challenges/2021/22-reactorReboot/README.md @@ -1,2 +1,16 @@ # [Day 22: Reactor Reboot](https://adventofcode.com/2021/day/22) +Today's solution is a little weird... + +I solved part one using the easy, store every point method. However, for part two, I didn't want to go to the trouble of writing code to work out the intersections of all the cubes. Instead, I chose to do the following: + +* Wrote some Python code (`openscad-generate.py`) to generate some [OpenSCAD](http://openscad.org/) code based on the challenge input + * This made liberal use of nested `union()`, `difference()`, `translate()` and `cube()` functions +* Ran this code in OpenSCAD and exported the resultant model as an STL +* Imported this STL file into Blender and used the 3D-Print Toolbox addon to calculate the total volume of the object +* Typed this number into the AoC website +* Obtained the 2nd star ★ :D + +![openscad](openscad-part-2.png) + +![blender](blender-part-2.png) \ No newline at end of file diff --git a/challenges/2021/22-reactorReboot/blender-part-2.png b/challenges/2021/22-reactorReboot/blender-part-2.png new file mode 100644 index 0000000..b81279c Binary files /dev/null and b/challenges/2021/22-reactorReboot/blender-part-2.png differ diff --git a/challenges/2021/22-reactorReboot/openscad-part-2.png b/challenges/2021/22-reactorReboot/openscad-part-2.png new file mode 100644 index 0000000..3b1bdf7 Binary files /dev/null and b/challenges/2021/22-reactorReboot/openscad-part-2.png differ diff --git a/challenges/2021/22-reactorReboot/part.1.scad b/challenges/2021/22-reactorReboot/part.1.scad new file mode 100644 index 0000000..53c6751 --- /dev/null +++ b/challenges/2021/22-reactorReboot/part.1.scad @@ -0,0 +1,98 @@ +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +translate([-40, -3, -48]) { +cube([48, 53, 55], center=false); +}; +translate([-38, -11, -30]) { +cube([49, 49, 50], center=false); +}; +}; +translate([-43, -16, -38]) { +cube([45, 47, 52], center=false); +}; +}; +translate([-10, -8, -41]) { +cube([55, 55, 46], center=false); +}; +}; +translate([-27, -2, -33]) { +cube([47, 48, 46], center=false); +}; +}; +translate([-41, -18, -34]) { +cube([46, 51, 54], center=false); +}; +}; +translate([-43, -20, -34]) { +cube([53, 48, 55], center=false); +}; +}; +translate([-47, -5, -20]) { +cube([46, 55, 53], center=false); +}; +}; +translate([-20, -40, -16]) { +cube([54, 47, 50], center=false); +}; +}; +translate([-25, -47, -46]) { +cube([50, 46, 53], center=false); +}; +}; +translate([-28, -6, 22]) { +cube([20, 11, 16], center=false); +}; +}; +translate([-34, -16, -43]) { +cube([49, 49, 47], center=false); +}; +}; +translate([-36, -44, 5]) { +cube([19, 12, 12], center=false); +}; +}; +translate([-23, -34, -38]) { +cube([46, 46, 51], center=false); +}; +}; +translate([-24, 26, -18]) { +cube([10, 14, 10], center=false); +}; +}; +translate([-23, -31, -38]) { +cube([46, 52, 52], center=false); +}; +}; +translate([-16, 7, -44]) { +cube([11, 13, 15], center=false); +}; +}; +translate([-8, -18, -27]) { +cube([54, 47, 46], center=false); +}; +}; +translate([-24, -3, 33]) { +cube([17, 11, 13], center=false); +}; +}; +translate([-28, -15, -18]) { +cube([47, 55, 54], center=false); +}; +}; diff --git a/challenges/2021/22-reactorReboot/part.2.scad b/challenges/2021/22-reactorReboot/part.2.scad new file mode 100644 index 0000000..970e167 --- /dev/null +++ b/challenges/2021/22-reactorReboot/part.2.scad @@ -0,0 +1,2098 @@ +difference() { +difference() { +difference() { +union() { +difference() { +union() { +union() { +union() { +difference() { +difference() { +union() { +union() { +union() { +difference() { +difference() { +union() { +difference() { +difference() { +difference() { +difference() { +union() { +union() { +difference() { +difference() { +difference() { +difference() { +union() { +difference() { +union() { +union() { +difference() { +union() { +difference() { +difference() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +union() { +difference() { +union() { +difference() { +difference() { +difference() { +difference() { +union() { +union() { +union() { +difference() { +union() { +difference() { +difference() { +union() { +union() { +difference() { +difference() { +difference() { +union() { +difference() { +difference() { +union() { +difference() { +difference() { +union() { +union() { +union() { +union() { +union() { +difference() { +union() { +difference() { +difference() { +difference() { +difference() { +union() { +union() { +union() { +union() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +difference() { +union() { +union() { +union() { +union() { +difference() { +union() { +difference() { +union() { +union() { +union() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +difference() { +union() { +union() { +difference() { +difference() { +difference() { +difference() { +union() { +union() { +union() { +union() { +union() { +union() { +difference() { +union() { +difference() { +difference() { +difference() { +union() { +union() { +difference() { +difference() { +difference() { +difference() { +union() { +union() { +difference() { +union() { +difference() { +difference() { +union() { +union() { +union() { +difference() { +union() { +union() { +union() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +union() { +difference() { +union() { +difference() { +union() { +union() { +difference() { +union() { +difference() { +union() { +union() { +union() { +union() { +difference() { +union() { +union() { +difference() { +union() { +difference() { +difference() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +union() { +difference() { +difference() { +difference() { +difference() { +difference() { +union() { +difference() { +difference() { +union() { +union() { +union() { +union() { +difference() { +difference() { +union() { +difference() { +difference() { +union() { +difference() { +difference() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +difference() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +union() { +translate([-40, -3, -48]) { +cube([48, 53, 55], center=false); +}; +translate([-38, -11, -30]) { +cube([49, 49, 50], center=false); +}; +}; +translate([-43, -16, -38]) { +cube([45, 47, 52], center=false); +}; +}; +translate([-10, -8, -41]) { +cube([55, 55, 46], center=false); +}; +}; +translate([-27, -2, -33]) { +cube([47, 48, 46], center=false); +}; +}; +translate([-41, -18, -34]) { +cube([46, 51, 54], center=false); +}; +}; +translate([-43, -20, -34]) { +cube([53, 48, 55], center=false); +}; +}; +translate([-47, -5, -20]) { +cube([46, 55, 53], center=false); +}; +}; +translate([-20, -40, -16]) { +cube([54, 47, 50], center=false); +}; +}; +translate([-25, -47, -46]) { +cube([50, 46, 53], center=false); +}; +}; +translate([-28, -6, 22]) { +cube([20, 11, 16], center=false); +}; +}; +translate([-34, -16, -43]) { +cube([49, 49, 47], center=false); +}; +}; +translate([-36, -44, 5]) { +cube([19, 12, 12], center=false); +}; +}; +translate([-23, -34, -38]) { +cube([46, 46, 51], center=false); +}; +}; +translate([-24, 26, -18]) { +cube([10, 14, 10], center=false); +}; +}; +translate([-23, -31, -38]) { +cube([46, 52, 52], center=false); +}; +}; +translate([-16, 7, -44]) { +cube([11, 13, 15], center=false); +}; +}; +translate([-8, -18, -27]) { +cube([54, 47, 46], center=false); +}; +}; +translate([-24, -3, 33]) { +cube([17, 11, 13], center=false); +}; +}; +translate([-28, -15, -18]) { +cube([47, 55, 54], center=false); +}; +}; +translate([52706, -51721, -29134]) { +cube([15874, 26738, 24390], center=false); +}; +}; +translate([19158, 48482, 36278]) { +cube([24233, 14434, 15483], center=false); +}; +}; +translate([33529, 41410, 35536]) { +cube([21007, 3320, 26531], center=false); +}; +}; +translate([39279, -54196, -46321]) { +cube([15553, 18903, 27176], center=false); +}; +}; +translate([-49951, -75783, -32974]) { +cube([16918, 10543, 23834], center=false); +}; +}; +translate([16267, 32962, 55102]) { +cube([17596, 5559, 24902], center=false); +}; +}; +translate([28231, -13203, -82121]) { +cube([5075, 24755, 10357], center=false); +}; +}; +translate([-3880, -97354, -32509]) { +cube([18893, 26079, 21806], center=false); +}; +}; +translate([-59644, -56932, -46680]) { +cube([15722, 16957, 21757], center=false); +}; +}; +translate([-22171, 59909, 51012]) { +cube([28731, 5219, 20843], center=false); +}; +}; +translate([-35278, -90913, 15441]) { +cube([23902, 36379, 14420], center=false); +}; +}; +translate([42440, -77130, -5117]) { +cube([5065, 22215, 27898], center=false); +}; +}; +translate([-23382, -96268, -1408]) { +cube([22458, 29070, 18273], center=false); +}; +}; +translate([46073, 2178, -72379]) { +cube([20483, 4666, 25387], center=false); +}; +}; +translate([-7367, 27822, -81222]) { +cube([23624, 7623, 23961], center=false); +}; +}; +translate([70121, -2405, -25162]) { +cube([14956, 23171, 18780], center=false); +}; +}; +translate([-38188, 303, -85237]) { +cube([29458, 24009, 10337], center=false); +}; +}; +translate([9308, 72560, -12862]) { +cube([26372, 16775, 19665], center=false); +}; +}; +translate([19088, -54261, -66813]) { +cube([1463, 24321, 10720], center=false); +}; +}; +translate([58563, 32116, -40547]) { +cube([8799, 18136, 18077], center=false); +}; +}; +translate([63946, -45525, 6297]) { +cube([8940, 12551, 26854], center=false); +}; +}; +translate([35523, -46123, -62601]) { +cube([10060, 6937, 6748], center=false); +}; +}; +translate([-45263, 66141, 24152]) { +cube([29188, 5165, 27360], center=false); +}; +}; +translate([-56833, -61785, 20400]) { +cube([17557, 22659, 10467], center=false); +}; +}; +translate([-64099, -14802, 59578]) { +cube([16932, 4585, 18709], center=false); +}; +}; +translate([54485, -9884, -33614]) { +cube([25056, 23449, 4113], center=false); +}; +}; +translate([-56136, 40175, 18766]) { +cube([14594, 10694, 27468], center=false); +}; +}; +translate([-29888, 56778, 19514]) { +cube([7446, 22694, 10874], center=false); +}; +}; +translate([57940, 4819, -36050]) { +cube([25259, 19819, 21684], center=false); +}; +}; +translate([-35953, -92305, -24944]) { +cube([17900, 29842, 25378], center=false); +}; +}; +translate([66547, 14135, 33083]) { +cube([16953, 10444, 8165], center=false); +}; +}; +translate([23558, 64415, -28114]) { +cube([14830, 8658, 13475], center=false); +}; +}; +translate([-13398, -78327, 32535]) { +cube([38837, 24307, 15088], center=false); +}; +}; +translate([59279, -48832, 18768]) { +cube([11185, 36194, 11503], center=false); +}; +}; +translate([-34289, 35546, 55554]) { +cube([1963, 23700, 17617], center=false); +}; +}; +translate([15715, -84334, 12788]) { +cube([14176, 19915, 19536], center=false); +}; +}; +translate([-38593, -24585, -84437]) { +cube([20643, 11755, 13457], center=false); +}; +}; +translate([-81422, -44476, -32716]) { +cube([29571, 12002, 9987], center=false); +}; +}; +translate([-5856, 22130, -84393]) { +cube([31262, 16942, 27428], center=false); +}; +}; +translate([5807, -82846, 17828]) { +cube([16560, 20557, 4760], center=false); +}; +}; +translate([40912, 7257, -67351]) { +cube([22371, 30533, 33083], center=false); +}; +}; +translate([-60312, 17308, 32687]) { +cube([7613, 18420, 24907], center=false); +}; +}; +translate([10748, 33001, -71306]) { +cube([10847, 15676, 8246], center=false); +}; +}; +translate([-67665, -76167, -13297]) { +cube([20649, 24433, 5277], center=false); +}; +}; +translate([3312, -35665, -82617]) { +cube([23269, 37045, 13008], center=false); +}; +}; +translate([35278, 25977, 55789]) { +cube([17712, 22569, 15454], center=false); +}; +}; +translate([17649, -77065, -32515]) { +cube([33266, 12763, 29458], center=false); +}; +}; +translate([55174, -63489, -20117]) { +cube([15123, 11656, 23732], center=false); +}; +}; +translate([21633, -56734, 42283]) { +cube([14467, 13238, 8858], center=false); +}; +}; +translate([32220, 48382, -38669]) { +cube([22150, 30703, 23029], center=false); +}; +}; +translate([-41133, -43943, -72464]) { +cube([20004, 31436, 4888], center=false); +}; +}; +translate([1841, 34565, 58731]) { +cube([12679, 34662, 14213], center=false); +}; +}; +translate([-81410, -41070, -25653]) { +cube([10391, 29860, 22725], center=false); +}; +}; +translate([54878, 37397, -29325]) { +cube([24861, 22851, 28913], center=false); +}; +}; +translate([-60358, -65054, 991]) { +cube([17341, 4699, 19794], center=false); +}; +}; +translate([-73582, 31733, -185]) { +cube([16075, 16256, 25601], center=false); +}; +}; +translate([-8304, -81827, 31671]) { +cube([7155, 16639, 26288], center=false); +}; +}; +translate([-76108, 20214, -16291]) { +cube([6001, 7324, 20117], center=false); +}; +}; +translate([15838, -82389, 3683]) { +cube([31216, 28347, 25246], center=false); +}; +}; +translate([33142, -69396, 10868]) { +cube([15751, 15800, 25732], center=false); +}; +}; +translate([-38048, -52011, 51368]) { +cube([27245, 15524, 18006], center=false); +}; +}; +translate([-4568, -45556, -81370]) { +cube([17428, 15987, 24595], center=false); +}; +}; +translate([-16514, -72602, -49767]) { +cube([18043, 12431, 34233], center=false); +}; +}; +translate([53082, -5166, 22143]) { +cube([38894, 8300, 23291], center=false); +}; +}; +translate([-88733, -41214, -22443]) { +cube([31585, 21458, 34730], center=false); +}; +}; +translate([46893, -50078, -39574]) { +cube([21187, 20391, 16334], center=false); +}; +}; +translate([-75085, 16715, -56327]) { +cube([31462, 24768, 23430], center=false); +}; +}; +translate([-76474, -64897, -20583]) { +cube([31078, 12210, 29727], center=false); +}; +}; +translate([-19957, -59234, -79358]) { +cube([17385, 27593, 18277], center=false); +}; +}; +translate([26667, -48864, 47058]) { +cube([28221, 27483, 28621], center=false); +}; +}; +translate([-44122, 38155, 31473]) { +cube([27512, 32891, 18297], center=false); +}; +}; +translate([-33391, -28005, 51281]) { +cube([8258, 8765, 20388], center=false); +}; +}; +translate([-87044, -23392, -2434]) { +cube([23191, 16247, 14561], center=false); +}; +}; +translate([-591, 49600, -55053]) { +cube([19874, 36474, 17771], center=false); +}; +}; +translate([-49830, 45107, -42830]) { +cube([24754, 19633, 3254], center=false); +}; +}; +translate([-11624, -69135, -60400]) { +cube([21421, 11018, 14280], center=false); +}; +}; +translate([-45799, -62524, -37426]) { +cube([21188, 15006, 8746], center=false); +}; +}; +translate([34798, 26496, 41925]) { +cube([30323, 16076, 14642], center=false); +}; +}; +translate([66112, 36258, -1591]) { +cube([2425, 14571, 15162], center=false); +}; +}; +translate([-15520, 72198, 23426]) { +cube([33400, 3999, 13750], center=false); +}; +}; +translate([-39470, -82394, -20694]) { +cube([15222, 18960, 13373], center=false); +}; +}; +translate([-51300, 23582, 49327]) { +cube([31694, 21513, 26613], center=false); +}; +}; +translate([-40352, 44295, -60202]) { +cube([14220, 21483, 22097], center=false); +}; +}; +translate([3094, -7619, -94190]) { +cube([6346, 14692, 22986], center=false); +}; +}; +translate([70662, 32659, -16957]) { +cube([6186, 17886, 11416], center=false); +}; +}; +translate([76282, -26320, -18269]) { +cube([19918, 33377, 28335], center=false); +}; +}; +translate([-76248, 23305, -27243]) { +cube([20219, 20882, 25227], center=false); +}; +}; +translate([37045, 59279, -5542]) { +cube([20776, 13316, 25951], center=false); +}; +}; +translate([-44346, -87528, -35428]) { +cube([23804, 28873, 32899], center=false); +}; +}; +translate([37275, -13753, -74562]) { +cube([22679, 15876, 21359], center=false); +}; +}; +translate([52620, 23965, -9509]) { +cube([33938, 27751, 5683], center=false); +}; +}; +translate([35795, -46269, -54424]) { +cube([28148, 24045, 23228], center=false); +}; +}; +translate([-59544, 9103, -75618]) { +cube([25778, 34882, 26746], center=false); +}; +}; +translate([48874, -77723, -14491]) { +cube([9569, 35234, 3435], center=false); +}; +}; +translate([37993, 60275, -30638]) { +cube([7429, 25362, 34833], center=false); +}; +}; +translate([54414, 7165, 21373]) { +cube([33027, 7323, 28295], center=false); +}; +}; +translate([-31071, -63048, 48010]) { +cube([22556, 8355, 5495], center=false); +}; +}; +translate([37842, -72053, -19271]) { +cube([22874, 20356, 6685], center=false); +}; +}; +translate([-44461, -33140, 65167]) { +cube([31509, 13993, 10642], center=false); +}; +}; +translate([-25510, -55779, -69951]) { +cube([28198, 31211, 23216], center=false); +}; +}; +translate([-58173, -54375, -67610]) { +cube([29654, 19863, 25055], center=false); +}; +}; +translate([49497, 22263, -42858]) { +cube([31441, 21471, 25542], center=false); +}; +}; +translate([-77801, -18176, 16740]) { +cube([15310, 15335, 15145], center=false); +}; +}; +translate([-40193, -32522, -79663]) { +cube([21042, 35230, 13064], center=false); +}; +}; +translate([-50373, -46038, 52074]) { +cube([26671, 33792, 19390], center=false); +}; +}; +translate([52388, -31867, -50390]) { +cube([25082, 31425, 13565], center=false); +}; +}; +translate([-88034, -23143, -36065]) { +cube([19298, 12680, 19403], center=false); +}; +}; +translate([-65232, -17477, 38324]) { +cube([11870, 22551, 19858], center=false); +}; +}; +translate([30925, 175, 57953]) { +cube([22504, 7970, 27491], center=false); +}; +}; +translate([-49373, -311, -77273]) { +cube([11174, 6458, 28742], center=false); +}; +}; +translate([32384, 53267, 12544]) { +cube([27788, 6021, 30469], center=false); +}; +}; +translate([-48309, 69828, -21642]) { +cube([23719, 3871, 16027], center=false); +}; +}; +translate([-28570, -24614, 75229]) { +cube([27726, 18651, 16555], center=false); +}; +}; +translate([-84432, -17335, -41225]) { +cube([32869, 6835, 9831], center=false); +}; +}; +translate([26592, 59225, -45690]) { +cube([16719, 2921, 23641], center=false); +}; +}; +translate([4610, 65924, -42917]) { +cube([24405, 11427, 16295], center=false); +}; +}; +translate([7145, 59641, 33512]) { +cube([13763, 12810, 17840], center=false); +}; +}; +translate([-7362, 66424, -34868]) { +cube([9918, 19546, 19617], center=false); +}; +}; +translate([-67112, -34742, 33549]) { +cube([18163, 4893, 18222], center=false); +}; +}; +translate([5116, -77258, -59199]) { +cube([19441, 23910, 9590], center=false); +}; +}; +translate([-5223, -85767, -63137]) { +cube([18056, 23614, 37850], center=false); +}; +}; +translate([-57402, 23575, 49017]) { +cube([19009, 20275, 19699], center=false); +}; +}; +translate([-5769, 39128, -71021]) { +cube([2455, 29056, 18175], center=false); +}; +}; +translate([6932, 30420, 55953]) { +cube([17313, 21210, 9574], center=false); +}; +}; +translate([-29541, -90145, -35054]) { +cube([37000, 33102, 23479], center=false); +}; +}; +translate([-10648, -52949, 51897]) { +cube([18603, 15935, 32581], center=false); +}; +}; +translate([71634, -20915, 21564]) { +cube([15777, 5887, 16666], center=false); +}; +}; +translate([-45805, -76458, 13612]) { +cube([26316, 29668, 24801], center=false); +}; +}; +translate([46952, 12007, -64360]) { +cube([25073, 19435, 20400], center=false); +}; +}; +translate([-83434, -40251, 10710]) { +cube([33192, 27968, 34323], center=false); +}; +}; +translate([-84933, 10644, 18662]) { +cube([15955, 10778, 24721], center=false); +}; +}; +translate([41424, 49202, -3488]) { +cube([23247, 18545, 28085], center=false); +}; +}; +translate([-58317, 25020, -62333]) { +cube([20057, 29470, 27195], center=false); +}; +}; +translate([31402, -39865, -61229]) { +cube([20863, 36309, 15565], center=false); +}; +}; +translate([11038, -70660, 23378]) { +cube([23413, 13461, 24467], center=false); +}; +}; +translate([-61703, 28118, 40276]) { +cube([13366, 25818, 4705], center=false); +}; +}; +translate([-53403, -42771, 44461]) { +cube([16232, 17974, 22842], center=false); +}; +}; +translate([-6688, 75749, -5417]) { +cube([21169, 23326, 11923], center=false); +}; +}; +translate([5384, -77335, -59871]) { +cube([30049, 20936, 26081], center=false); +}; +}; +translate([1603, 59386, 17493]) { +cube([22411, 15772, 19728], center=false); +}; +}; +translate([16902, 20481, -81132]) { +cube([23364, 30595, 28241], center=false); +}; +}; +translate([-31160, -92494, 8537]) { +cube([26115, 18210, 4266], center=false); +}; +}; +translate([-18183, 13153, 66118]) { +cube([4351, 36801, 9526], center=false); +}; +}; +translate([55672, 2135, -45212]) { +cube([20671, 25629, 25849], center=false); +}; +}; +translate([35438, 43753, -41226]) { +cube([32864, 14156, 22699], center=false); +}; +}; +translate([23646, -76449, -21377]) { +cube([12054, 22453, 7251], center=false); +}; +}; +translate([-31654, 18663, -81288]) { +cube([12647, 16047, 29699], center=false); +}; +}; +translate([-76966, -46340, -5666]) { +cube([17927, 24083, 28657], center=false); +}; +}; +translate([-31214, 12464, -86327]) { +cube([10559, 30409, 33746], center=false); +}; +}; +translate([21093, -67130, 44205]) { +cube([13088, 35269, 27741], center=false); +}; +}; +translate([-68172, -62236, -31864]) { +cube([18686, 14379, 27255], center=false); +}; +}; +translate([13353, 66632, -12135]) { +cube([10847, 19051, 32232], center=false); +}; +}; +translate([-74820, -51864, -18528]) { +cube([15524, 37405, 22221], center=false); +}; +}; +translate([-13545, 63598, -31867]) { +cube([17083, 19798, 32396], center=false); +}; +}; +translate([-62438, -30526, 46663]) { +cube([18263, 34496, 21754], center=false); +}; +}; +translate([22083, 2257, 54139]) { +cube([21646, 16645, 23747], center=false); +}; +}; +translate([63102, -36610, 17017]) { +cube([27106, 14638, 20278], center=false); +}; +}; +translate([-25513, -55321, -82595]) { +cube([22594, 28976, 23934], center=false); +}; +}; +translate([-59282, -22135, -76370]) { +cube([11371, 27076, 30387], center=false); +}; +}; +translate([-46516, -40875, 50078]) { +cube([9096, 10457, 17013], center=false); +}; +}; +translate([247, 59666, 41161]) { +cube([17432, 14004, 24870], center=false); +}; +}; +translate([41843, -66781, -8026]) { +cube([17902, 13457, 7161], center=false); +}; +}; +translate([56442, 31447, 15633]) { +cube([10896, 6658, 10809], center=false); +}; +}; +translate([22246, -33697, 45175]) { +cube([30013, 21062, 35531], center=false); +}; +}; +translate([25597, 1997, -79738]) { +cube([10716, 17208, 24753], center=false); +}; +}; +translate([-15480, -36965, 72200]) { +cube([21455, 28020, 23886], center=false); +}; +}; +translate([-44938, 14179, 63576]) { +cube([28136, 23716, 7162], center=false); +}; +}; +translate([-60563, 35288, 28791]) { +cube([34286, 26534, 15168], center=false); +}; +}; +translate([-2781, -78181, 7115]) { +cube([29829, 17524, 21755], center=false); +}; +}; +translate([10325, -48783, -85849]) { +cube([24527, 20524, 17884], center=false); +}; +}; +translate([-9545, -66451, 44770]) { +cube([15266, 12798, 21710], center=false); +}; +}; +translate([-58489, 44411, -58310]) { +cube([29778, 22785, 24471], center=false); +}; +}; +translate([24722, -67833, -67381]) { +cube([9765, 27380, 26392], center=false); +}; +}; +translate([58610, -12225, 23646]) { +cube([15179, 19352, 27466], center=false); +}; +}; +translate([-37164, 62914, 11097]) { +cube([23436, 14296, 10047], center=false); +}; +}; +translate([50156, -47706, -39835]) { +cube([20088, 34617, 26485], center=false); +}; +}; +translate([76207, -24144, -2126]) { +cube([16301, 31692, 7917], center=false); +}; +}; +translate([7817, -55682, -81159]) { +cube([23841, 22795, 28988], center=false); +}; +}; +translate([71906, 12680, 3440]) { +cube([19296, 13583, 19833], center=false); +}; +}; +translate([-38023, -83735, -56158]) { +cube([33563, 37686, 17899], center=false); +}; +}; +translate([-29161, -46665, 57913]) { +cube([13622, 6347, 17739], center=false); +}; +}; +translate([-21117, -29641, 70665]) { +cube([11389, 8324, 8461], center=false); +}; +}; +translate([-87374, -21190, -8554]) { +cube([16666, 14438, 35203], center=false); +}; +}; +translate([18046, 48725, -43262]) { +cube([24677, 30189, 8224], center=false); +}; +}; +translate([29634, 48479, -54430]) { +cube([16751, 21712, 28465], center=false); +}; +}; +translate([49482, -27612, 32204]) { +cube([17649, 21920, 22413], center=false); +}; +}; +translate([-18852, 68426, -30812]) { +cube([5939, 8482, 4482], center=false); +}; +}; +translate([31377, 22930, -67913]) { +cube([5970, 35364, 18083], center=false); +}; +}; +translate([-39598, 6896, -73733]) { +cube([11851, 13292, 6012], center=false); +}; +}; +translate([27751, 44762, 25432]) { +cube([13096, 29065, 29129], center=false); +}; +}; +translate([67176, -29998, -42471]) { +cube([19515, 19692, 31310], center=false); +}; +}; +translate([-60642, -43985, -70335]) { +cube([32455, 14911, 17025], center=false); +}; +}; +translate([-23536, 61753, -65238]) { +cube([22517, 15537, 35658], center=false); +}; +}; +translate([-75390, 5503, -42131]) { +cube([10974, 24908, 27575], center=false); +}; +}; +translate([38542, -59214, 40608]) { +cube([14870, 25000, 12736], center=false); +}; +}; +translate([-9650, -28406, -82649]) { +cube([18557, 31619, 19765], center=false); +}; +}; +translate([-2849, -5170, -79401]) { +cube([23554, 22973, 4525], center=false); +}; +}; +translate([-56789, 12504, -63987]) { +cube([21923, 5596, 6475], center=false); +}; +}; +translate([-42510, 60034, 30430]) { +cube([13069, 9701, 17844], center=false); +}; +}; +translate([40496, 5792, 45679]) { +cube([24451, 4521, 22450], center=false); +}; +}; +translate([36887, 47538, -42985]) { +cube([20640, 15993, 14645], center=false); +}; +}; +translate([33479, -68548, 13251]) { +cube([24933, 22022, 25853], center=false); +}; +}; +translate([63072, 15646, 21504]) { +cube([18346, 33749, 23645], center=false); +}; +}; +translate([-76216, -30534, -50280]) { +cube([14305, 12984, 24059], center=false); +}; +}; +translate([25878, -64350, 27874]) { +cube([34037, 28163, 11487], center=false); +}; +}; +translate([-51496, -5396, -78407]) { +cube([4552, 34795, 27423], center=false); +}; +}; +translate([-68762, 33207, -42617]) { +cube([18318, 18855, 26771], center=false); +}; +}; +translate([-45658, -13226, 57392]) { +cube([20929, 25886, 19815], center=false); +}; +}; +translate([-8068, -48399, 50498]) { +cube([31830, 20245, 20915], center=false); +}; +}; +translate([16850, -77260, -47859]) { +cube([10916, 15038, 19306], center=false); +}; +}; +translate([-24227, 60223, -28685]) { +cube([23076, 24369, 26798], center=false); +}; +}; +translate([-83203, -38213, -19771]) { +cube([22297, 36924, 16137], center=false); +}; +}; +translate([22050, -55088, -82502]) { +cube([7517, 26315, 34153], center=false); +}; +}; +translate([55602, 30508, -18418]) { +cube([18331, 30272, 18982], center=false); +}; +}; +translate([18396, 48295, -50879]) { +cube([25301, 17109, 22018], center=false); +}; +}; +translate([58964, 5076, -15462]) { +cube([36847, 4369, 7741], center=false); +}; +}; +translate([65419, -12404, -19581]) { +cube([31664, 16916, 23261], center=false); +}; +}; +translate([58822, -31174, -32926]) { +cube([20032, 24357, 13868], center=false); +}; +}; +translate([2312, -14468, -82159]) { +cube([12607, 6048, 18813], center=false); +}; +}; +translate([-8615, -34749, -85890]) { +cube([15331, 24822, 12711], center=false); +}; +}; +translate([10021, 60507, -46068]) { +cube([18707, 15458, 29125], center=false); +}; +}; +translate([47209, -33718, -50448]) { +cube([37981, 33599, 21422], center=false); +}; +}; +translate([-69679, -62936, -6028]) { +cube([4876, 34994, 9150], center=false); +}; +}; +translate([11568, -77218, -1658]) { +cube([26721, 4379, 30515], center=false); +}; +}; +translate([68949, -11073, 29484]) { +cube([14716, 28890, 17617], center=false); +}; +}; +translate([-42138, 22944, 45644]) { +cube([16971, 17740, 26515], center=false); +}; +}; +translate([-54212, 54848, -34752]) { +cube([31015, 29184, 26170], center=false); +}; +}; +translate([-61743, -62636, -40084]) { +cube([17829, 11593, 20604], center=false); +}; +}; +translate([-58593, -53837, 34877]) { +cube([22389, 25053, 16278], center=false); +}; +}; +translate([-29140, -81905, 714]) { +cube([21514, 8785, 8590], center=false); +}; +}; +translate([-70736, -53884, -23826]) { +cube([24647, 12315, 9944], center=false); +}; +}; +translate([64926, -32881, 18988]) { +cube([23659, 26495, 24808], center=false); +}; +}; +translate([33758, -41289, 66720]) { +cube([11580, 27367, 20163], center=false); +}; +}; +translate([67177, -1270, -12298]) { +cube([18418, 28420, 22861], center=false); +}; +}; +translate([-30728, -80101, -7737]) { +cube([21052, 8710, 13783], center=false); +}; +}; +translate([-34058, -84130, -2411]) { +cube([22890, 24520, 27968], center=false); +}; +}; +translate([-82888, -53498, -15466]) { +cube([37357, 10100, 28036], center=false); +}; +}; +translate([53096, -31292, 46937]) { +cube([20637, 31022, 7628], center=false); +}; +}; +translate([58806, -35114, -32393]) { +cube([13686, 19542, 16507], center=false); +}; +}; +translate([-32570, -70056, 15130]) { +cube([12126, 14471, 28399], center=false); +}; +}; +translate([8231, -52110, -83079]) { +cube([18518, 21358, 21318], center=false); +}; +}; +translate([-7168, -85219, -55]) { +cube([25173, 8869, 15609], center=false); +}; +}; +translate([-48759, 56514, -17816]) { +cube([30938, 24580, 17549], center=false); +}; +}; +translate([71494, -20577, -16229]) { +cube([17886, 25999, 19829], center=false); +}; +}; +translate([-74127, -37318, 23418]) { +cube([12271, 20933, 24603], center=false); +}; +}; +translate([46250, 39997, -659]) { +cube([18478, 15667, 23419], center=false); +}; +}; +translate([-3747, -88542, -50866]) { +cube([22654, 37255, 25474], center=false); +}; +}; +translate([11967, -42409, 51760]) { +cube([27213, 15335, 27154], center=false); +}; +}; +translate([32634, 53351, 37069]) { +cube([21950, 25333, 15912], center=false); +}; +}; +translate([-45801, 6739, -80719]) { +cube([11411, 28805, 19245], center=false); +}; +}; +translate([-59939, -2816, 43062]) { +cube([16447, 22197, 33292], center=false); +}; +}; +translate([-54552, 30463, -60676]) { +cube([8637, 29255, 19990], center=false); +}; +}; +translate([947, 17259, -77711]) { +cube([36349, 18441, 20499], center=false); +}; +}; +translate([-34155, 58205, 10469]) { +cube([18044, 19543, 24610], center=false); +}; +}; +translate([-41364, -55475, 53974]) { +cube([16411, 34797, 20222], center=false); +}; +}; +translate([-5866, -10037, 69763]) { +cube([12525, 14371, 23289], center=false); +}; +}; +translate([40058, 51027, -3345]) { +cube([28641, 23283, 8760], center=false); +}; +}; +translate([-41513, -47848, 44033]) { +cube([15416, 18031, 18190], center=false); +}; +}; +translate([-68876, 30233, 21522]) { +cube([11629, 13773, 16950], center=false); +}; +}; +translate([-10503, -33479, -81965]) { +cube([17554, 7464, 12966], center=false); +}; +}; +translate([-63996, 23827, 50227]) { +cube([28447, 15104, 27872], center=false); +}; +}; +translate([-34663, 57015, -32869]) { +cube([17301, 25324, 15765], center=false); +}; +}; +translate([30784, 32138, 31941]) { +cube([20862, 34671, 29228], center=false); +}; +}; +translate([-3755, -64141, 36971]) { +cube([6651, 6171, 21527], center=false); +}; +}; +translate([-20087, -63838, 57392]) { +cube([23472, 28284, 12312], center=false); +}; +}; +translate([-86557, 14861, 27350]) { +cube([31588, 25552, 9182], center=false); +}; +}; +translate([15258, 26537, 65823]) { +cube([16889, 16383, 2772], center=false); +}; +}; +translate([13862, -84456, -13132]) { +cube([28381, 13307, 19038], center=false); +}; +}; +translate([-42982, -73917, 21993]) { +cube([21134, 25764, 28855], center=false); +}; +}; +translate([-29379, 29242, -79142]) { +cube([22279, 9421, 18684], center=false); +}; +}; +translate([11546, 61301, -22865]) { +cube([37955, 25669, 27443], center=false); +}; +}; +translate([-48399, 60118, -25376]) { +cube([10723, 22092, 18720], center=false); +}; +}; +translate([-57062, -59454, 13677]) { +cube([20224, 2852, 24752], center=false); +}; +}; +translate([-34067, -81243, -17444]) { +cube([12900, 24479, 21267], center=false); +}; +}; +translate([44352, 50950, 1643]) { +cube([19785, 16355, 21697], center=false); +}; +}; +translate([64615, 19545, -24935]) { +cube([15145, 9905, 8746], center=false); +}; +}; +translate([25709, -76035, -30123]) { +cube([13714, 9989, 33538], center=false); +}; +}; +translate([-66361, -60420, 13651]) { +cube([27577, 6942, 20951], center=false); +}; +}; +translate([26547, 25778, -71893]) { +cube([27173, 16638, 25424], center=false); +}; +}; +translate([35485, 32129, 31017]) { +cube([29203, 27206, 22486], center=false); +}; +}; +translate([-27532, 42528, 44767]) { +cube([11210, 10529, 22210], center=false); +}; +}; +translate([-85657, -4500, 25434]) { +cube([25566, 20783, 17387], center=false); +}; +}; +translate([10591, -55737, 45939]) { +cube([22362, 3828, 17211], center=false); +}; +}; +translate([37813, -23900, -86629]) { +cube([8603, 6723, 38645], center=false); +}; +}; +translate([-73010, 21009, 11818]) { +cube([20333, 32729, 18768], center=false); +}; +}; +translate([54601, -64449, -8460]) { +cube([8618, 23154, 24376], center=false); +}; +}; +translate([-16576, 4232, -81741]) { +cube([5750, 30020, 18845], center=false); +}; +}; +translate([67542, -5704, -36781]) { +cube([13853, 30148, 33200], center=false); +}; +}; +translate([-10656, -13060, -92317]) { +cube([31807, 25902, 17810], center=false); +}; +}; +translate([-64593, 38045, -46825]) { +cube([10539, 15834, 18675], center=false); +}; +}; +translate([36627, -34351, -85072]) { +cube([8039, 28435, 16985], center=false); +}; +}; +translate([-23261, -22196, 57375]) { +cube([17438, 36126, 22808], center=false); +}; +}; +translate([-32414, -83945, -17901]) { +cube([18110, 23098, 11673], center=false); +}; +}; +translate([-69199, -35361, 47106]) { +cube([24094, 24245, 1311], center=false); +}; +}; +translate([-17361, -87112, -17309]) { +cube([17671, 12030, 16464], center=false); +}; +}; +translate([49576, -52965, -33749]) { +cube([20693, 24100, 20430], center=false); +}; +}; +translate([-84872, 21104, -33952]) { +cube([24648, 20040, 34206], center=false); +}; +}; +translate([25065, -74764, -27008]) { +cube([28108, 24123, 14582], center=false); +}; +}; +translate([5466, 58871, 3407]) { +cube([23096, 28483, 27693], center=false); +}; +}; +translate([58159, 1719, -56660]) { +cube([11747, 19320, 23709], center=false); +}; +}; +translate([49812, 42397, 10501]) { +cube([25513, 16199, 9492], center=false); +}; +}; +translate([-28176, -4561, 66184]) { +cube([22632, 15330, 17052], center=false); +}; +}; +translate([-36512, 6529, 61540]) { +cube([20156, 26629, 18423], center=false); +}; +}; +translate([-76835, 23689, 26996]) { +cube([25649, 23862, 30192], center=false); +}; +}; +translate([15920, -73996, -40686]) { +cube([23899, 22374, 22063], center=false); +}; +}; +translate([74449, -30516, 6351]) { +cube([18473, 12591, 14781], center=false); +}; +}; +translate([-36036, 66163, 12845]) { +cube([17449, 16077, 4839], center=false); +}; +}; +translate([-58293, 41167, 5699]) { +cube([18009, 22466, 21005], center=false); +}; +}; +translate([55508, 411, 45931]) { +cube([25477, 27938, 2954], center=false); +}; +}; +translate([36567, -64313, 19533]) { +cube([34150, 17377, 11546], center=false); +}; +}; +translate([57973, 640, -46928]) { +cube([18817, 31864, 31344], center=false); +}; +}; +translate([40700, 58372, -34813]) { +cube([18938, 14935, 16835], center=false); +}; +}; +translate([-35809, 14279, 59850]) { +cube([19362, 22529, 16034], center=false); +}; +}; +translate([-11980, 71172, 27605]) { +cube([27908, 18198, 17335], center=false); +}; +}; +translate([-28383, -49010, 67766]) { +cube([15516, 34318, 3304], center=false); +}; +}; +translate([-63520, -65070, 7548]) { +cube([6208, 23749, 21273], center=false); +}; +}; +translate([-30097, 50203, -47190]) { +cube([20304, 26343, 24516], center=false); +}; +}; +translate([-10027, 42660, -62549]) { +cube([23904, 24927, 17199], center=false); +}; +}; +translate([-75743, -18063, 43896]) { +cube([33983, 9626, 7248], center=false); +}; +}; +translate([-53973, 19812, -65245]) { +cube([32122, 16084, 11623], center=false); +}; +}; +translate([9327, 60724, 4679]) { +cube([21654, 20329, 17977], center=false); +}; +}; +translate([-9382, -12635, -92088]) { +cube([24079, 4756, 20161], center=false); +}; +}; +translate([-49568, 45400, -37218]) { +cube([28266, 20871, 13634], center=false); +}; +}; +translate([26374, 29522, -72113]) { +cube([24343, 15503, 21256], center=false); +}; +}; +translate([-7123, -30606, -89692]) { +cube([17030, 9037, 29326], center=false); +}; +}; +translate([24645, -7385, -75457]) { +cube([10041, 6851, 6178], center=false); +}; +}; +translate([46600, 42638, -15214]) { +cube([29338, 19382, 14415], center=false); +}; +}; +translate([-73156, -18542, -51976]) { +cube([8258, 25165, 18352], center=false); +}; +}; +translate([-46953, -43453, 48050]) { +cube([14965, 25512, 20500], center=false); +}; +}; +translate([44491, -52270, 25565]) { +cube([19949, 4744, 16835], center=false); +}; +}; +translate([54480, -56683, -8303]) { +cube([31216, 26029, 24099], center=false); +}; +}; +translate([29997, 62586, -22633]) { +cube([27713, 22303, 25269], center=false); +}; +}; +translate([-56730, -61124, -44900]) { +cube([23469, 24958, 13683], center=false); +}; +}; +translate([-36099, 59225, -49431]) { +cube([18591, 21342, 20788], center=false); +}; +}; +translate([45514, -2009, -65113]) { +cube([28690, 12434, 19941], center=false); +}; +}; +translate([-31309, -84143, 26691]) { +cube([9160, 21033, 22289], center=false); +}; +}; +translate([-68448, -49282, -6567]) { +cube([16005, 2207, 28334], center=false); +}; +}; +translate([9190, -40030, 56198]) { +cube([14116, 15640, 29106], center=false); +}; +}; +translate([5498, -43923, -85770]) { +cube([16730, 28569, 16530], center=false); +}; +}; +translate([-61505, 34956, -43349]) { +cube([20420, 23213, 19167], center=false); +}; +}; +translate([-458, 14735, 60006]) { +cube([12388, 29585, 13059], center=false); +}; +}; +translate([54250, -71222, -28518]) { +cube([13936, 36549, 12825], center=false); +}; +}; +translate([-28528, -45762, 64430]) { +cube([28571, 20446, 7802], center=false); +}; +}; +translate([17184, -43934, -75789]) { +cube([15257, 18839, 10743], center=false); +}; +}; +translate([-54107, -647, 56621]) { +cube([8573, 30064, 10118], center=false); +}; +}; +translate([-63306, -54815, 3488]) { +cube([12924, 3018, 20027], center=false); +}; +}; +translate([-33064, -68795, 48722]) { +cube([15244, 28520, 9560], center=false); +}; +}; +translate([28813, 10091, 48567]) { +cube([16757, 33152, 31182], center=false); +}; +}; +translate([-34407, -82959, -14721]) { +cube([20750, 15235, 7173], center=false); +}; +}; +translate([11006, -64578, 31394]) { +cube([27909, 9933, 16795], center=false); +}; +}; +translate([-89516, -33338, 23842]) { +cube([33482, 13328, 16380], center=false); +}; +}; +translate([12382, 51972, -51009]) { +cube([30281, 19355, 21465], center=false); +}; +}; +translate([-23497, -14057, -82664]) { +cube([22988, 20617, 20830], center=false); +}; +}; +translate([42738, -45357, 44137]) { +cube([1595, 20258, 18631], center=false); +}; +}; +translate([-19799, -63709, 48687]) { +cube([29346, 17960, 15484], center=false); +}; +}; +translate([-50529, -47930, -75205]) { +cube([20058, 28026, 29582], center=false); +}; +}; +translate([-23531, 68487, 8925]) { +cube([37565, 21078, 19335], center=false); +}; +}; +translate([1663, 56791, 12276]) { +cube([18451, 18556, 31844], center=false); +}; +}; +translate([45731, -23286, -64525]) { +cube([29440, 23680, 35905], center=false); +}; +}; +translate([-78486, -31099, -48346]) { +cube([21709, 12509, 23212], center=false); +}; +}; +translate([-43514, 67709, -16374]) { +cube([8761, 4787, 21555], center=false); +}; +}; +translate([32961, -62894, -33931]) { +cube([28882, 21555, 18883], center=false); +}; +}; +translate([-52937, 64942, -3622]) { +cube([16863, 18498, 30798], center=false); +}; +}; +translate([41640, -70913, -23373]) { +cube([19737, 20722, 10650], center=false); +}; +}; +translate([16109, -19443, 75001]) { +cube([8607, 28111, 15517], center=false); +}; +}; +translate([14880, 37677, -64590]) { +cube([26736, 17542, 24521], center=false); +}; +}; +translate([-93344, -27796, -10127]) { +cube([20109, 2889, 26629], center=false); +}; +}; +translate([59960, -4002, -67984]) { +cube([5459, 16227, 25792], center=false); +}; +}; +translate([42351, -20084, -65765]) { +cube([14396, 6956, 14536], center=false); +}; +}; +translate([-59234, -71438, -11162]) { +cube([29880, 12970, 18567], center=false); +}; +}; +translate([51040, -60224, -546]) { +cube([16362, 20027, 20172], center=false); +}; +}; +translate([-77978, 36001, 14976]) { +cube([18105, 22307, 8821], center=false); +}; +}; +translate([56211, 8311, -53749]) { +cube([19131, 9398, 33015], center=false); +}; +}; +translate([-36432, 19575, -86318]) { +cube([29250, 10772, 27860], center=false); +}; +}; +translate([-287, -90791, -21768]) { +cube([4876, 24333, 25781], center=false); +}; +}; +translate([-79379, -31440, -17403]) { +cube([16549, 30848, 25493], center=false); +}; +}; +translate([-35905, 29389, 42947]) { +cube([17573, 26718, 27325], center=false); +}; +}; +translate([25117, 3093, -77359]) { +cube([22807, 34146, 12028], center=false); +}; +}; +translate([56769, -37074, -21787]) { +cube([31553, 31389, 15387], center=false); +}; +}; +translate([-28981, 28580, -77998]) { +cube([18565, 23798, 23541], center=false); +}; +}; +translate([-24957, 35439, 51302]) { +cube([24691, 17907, 35548], center=false); +}; +}; +translate([-47011, -6746, 65710]) { +cube([16339, 6369, 13788], center=false); +}; +}; +translate([-73026, -27117, -58305]) { +cube([14640, 26039, 22264], center=false); +}; +}; +translate([-20512, 45491, 48277]) { +cube([24759, 25684, 2138], center=false); +}; +}; +translate([23379, 63961, 3964]) { +cube([19976, 29553, 21250], center=false); +}; +}; +translate([597, -83653, -11879]) { +cube([17020, 11504, 33678], center=false); +}; +}; +translate([-58597, 12126, -75993]) { +cube([12011, 27403, 39202], center=false); +}; +}; +translate([-2903, 72176, 23687]) { +cube([14672, 16351, 9457], center=false); +}; +}; +translate([12525, -2148, 59625]) { +cube([11754, 9110, 22557], center=false); +}; +}; +translate([-84588, -29471, -16989]) { +cube([12089, 15450, 30424], center=false); +}; +}; +translate([-58154, -74940, 12160]) { +cube([23990, 20027, 7660], center=false); +}; +}; +translate([-6724, 22646, -88495]) { +cube([21352, 30720, 26963], center=false); +}; +}; +translate([-87262, -23648, 11206]) { +cube([17027, 27462, 16342], center=false); +}; +}; +translate([53546, -28908, 46725]) { +cube([17977, 20882, 13880], center=false); +}; +}; +translate([-81664, -26054, -43138]) { +cube([17107, 19919, 31911], center=false); +}; +}; +translate([74496, 1367, -2108]) { +cube([16709, 8547, 18295], center=false); +}; +}; +translate([-69821, -4418, -65231]) { +cube([29943, 28416, 14754], center=false); +}; +}; +translate([6104, 65171, 26193]) { +cube([27100, 13291, 18745], center=false); +}; +}; +translate([-4928, 50554, -66020]) { +cube([21197, 21245, 32012], center=false); +}; +}; +translate([22174, -69871, -37898]) { +cube([21795, 23315, 14025], center=false); +}; +}; diff --git a/challenges/2021/README.md b/challenges/2021/README.md index 9ffaeef..09702dc 100644 --- a/challenges/2021/README.md +++ b/challenges/2021/README.md @@ -33,7 +33,7 @@ Solutions to the [2021 Advent of Code](https://adventofcode.com/2021). | 19 - Beacon Scanner | Unattempted | | | | 20 - Trench Map \* | ★ ★ | [Python](20-trenchMap/py), [Nim](20-trenchMap/nim) | Took a moment to realise that the infinite grid alternates between lit and unlit, and even then I had to look at someone else's solution to realise it. | | 21 - Dirac Dice | ★ ☆ | [Python](21-diracDice/py) | Couldn't be bothered with part two - I've got too much going on at the moment to spend a lot of time thinking about it. | -| 22 - Reactor Reboot | ★ ☆ | [Python](22-reactorReboot/py) | Once again - couldn't be bothered with part two. | +| 22 - Reactor Reboot | ★ ★ | [Python, OpenSCAD and Blender](22-reactorReboot/) | I did not expect to end up using 3D CAD software to complete AoC... |