On the topic of LEGO instructions, LEGO released a surprisingly sophisticated CAD tool called LEGO Digital Designer[1] way back in 2004. It contains 3D models of basically all LEGO pieces and modeling tools for creating arbitrary assemblies out of them. Users can snap pieces together, specify joints, and pose various parts. The software can also generate assembly instructions on-the-fly for any given design.<p>LEGO also runs a website where designs can be shared, for instance "Computer Problems"[2].<p>Here are some screen shots of the software in action[3] and the source of the design file[4] - ".lxf" files are just zip archives containing a preview png image and an xml file specifying the LEGO parts and their location in the assembly.<p>It would be interesting to know how this assembly planner was implemented: how does the 'compiler' decide on the order of operations? It seems to have heuristics for breaking the design into a series discrete of submodules that can be assembled independently, then combined at the end, as opposed to a simple linear strategy. Presumably the shape of the assembly tree is optimized for human "execution" - not too broad, nor too deep.<p>In particular, I wonder what kind of human the instructions are optimized for, if at all: children, or adults? In other words, are there some assembly strategies that adults prefer (more complex subassemblies for instance) that children are less successful at following?<p>---<p>[1]: <a href="https://en.wikipedia.org/wiki/Lego_Digital_Designer" rel="nofollow">https://en.wikipedia.org/wiki/Lego_Digital_Designer</a><p>[2]: <a href="http://ldd.us.lego.com/en-us/gallery/51887f3e-1474-4411-9dcb-677d704ceb1c" rel="nofollow">http://ldd.us.lego.com/en-us/gallery/51887f3e-1474-4411-9dcb...</a><p>[3]: <a href="http://imgur.com/a/hgeb7" rel="nofollow">http://imgur.com/a/hgeb7</a><p>[4]: <a href="https://gist.github.com/anonymous/1b333df3b864c48bfa48" rel="nofollow">https://gist.github.com/anonymous/1b333df3b864c48bfa48</a>