銊淬厠銊广厙馃寘

..finally! I spent quite some time on it but enjoyed every bit solving it. Along the way I made few surprising discoveries about the puzzle that are intimately tide up to computing.

For instance, pretty soon after I have started I could see that the key problem here is how to find the right block quickly enough. Since the pieces do not have fragments of picture painted on them, the only way to identify the piece is by features of shape. Turns out, even though pieces are misleadingly similar, they could be uniquely described by width, height, type of shape (5+), shape or holes, and shape of arms. In a sense, now this is a computational problem on how to 鈥渜uery鈥 (find) these objects in the most efficient manner possible. Put it this way, we could speed-up the process a little bit:

Alignment鈥娾斺妛ill help to see the differences easier. Analogy in computing would be padding, for example in the low level of filesystem routines to speedup sequential access.

Group by type鈥娾斺妌o need to do search in all pieces. Search in subset makes it few times faster.

Order by same selected feature鈥娾斺奷uh.

Least Frequently Used policy鈥娾斺奵ache eviction policy that is used to speedup access when fast storage is very limited (cache). It is much easier to look and try pieces from say a group of 5 than 40. Think of those 5 really good likely to fit-in pieces as your cache and the rest as a RAM. How this works with this puzzle? Let鈥檚 say you have a group of 40 and you a searching among them often to fit a segment of similar pieces. If after each failed try to fit an item you put it in the corner, then eventually you will improve quality of your group by having very similar pieces close together, which in turn will let you query them faster in the future.

it鈥檚 all started like this

1

first steps

2

now we get center. but oh boy, everything else is such a mess

3

doing a bit of cleaning

4

well, that was helpful

5

now we have borders!

6

more stuff emerges

7

more alignment, more grouping, more sorting!

8

yay!

9