Next Steps - Solving The Soma Cube

Next step in solving Soma cube. Red Vee iterating naively using a list through one of eight of the 2x2x2 cubes in the 3x3x3.

Can I do this computationally? Artisanal list making is lovely but impractical.

Make an adjacency matrix, and then pick the location for the center of the vee and compute every set of pairs of adjacent nodes?

Made some progress with using computational methods to generate new iterations in adjacent 2x2x2 cubes and put those into list.

But yes definitely on to matrix operations.

I can make graphs from an adjacency matrix. Which is cool but I really think from reviewing-"Puzzling Over Exact Cover Problems"

I think I will be best served by a verbose matrix of all of the possible Soma piece positions. The positions are constrained elegantly by Conway and pals - Winning Ways
Translating this into a SNAP!/Edgy activity I think will help me and be fun for others also.

Not gonna pick a fight with Conway! :~)

I am having some success formulating these piece placement tables by creating a csv file of the different positions of a piece in the smallest "space" . Then artisanal weaving and kneading and trimming ensues
For instance -

  1. The Vee in a 2x2x2 cube (4 positions per face x 6 faces = 24 positions)
  2. Bring that file into SNAP! and "move" that 2x2x2 to the other seven 2x2x2 cubes inside the 3x3x3
  3. Write the twentyseven nodes of the 3x3x3 to a list variable (total 8X24 = 192 lists of 27 nodes) as they "happen".
  4. Export to CSV to remove
    a. the duplicates (should be 32 of the them where 2x2x2 cubes overlap in the 3x3x3)
    b. positions that don't me the the VFEC criteria

All the while looking the intermediate results as pleasing aesthetic dynamic art/data objects....something has to motivate me - pretty colors, shapes and patterns have worked since my first set of wooden blocks. Why stop now.

However -

Is there something in array manipulation methods I am ignorant of (I have yet to complete a course in linear algebra or any code courses past "Intro to...") that might inform a more generalized approach to generating these tables?

I know you have lots of other fish to fry but if you can offer a hint that would be most welcome.

I'm far less of an expert on the math than I think you think. But I imagine you could expand the 2x2x2 matrix from step 1 into a 3x3x3, maybe just by adding zeros but I wouldn't swear to that part, then multiply by each of seven fixed 3x3x3 matrices to move the vee around.

If in 4a you mean really equal arrays, you can remove them in Snap! with the REMOVE DUPLICATES block in the List Utilities library. I don't know what 4b means but I bet it can be done in Snap! too. :~)

Remove duplicates sounds great. I will try that tonight


Edward Patrick Vogel



Soma Cube Solver WIP.
Create the piece tables
File housekeeping process
Prevent crashing
Here solving for 111 possible Green eL placements into 77 already found Tee, Crystal and Vee partial solutions

Cool. Too hairy for me to read... :~/

I will be making a step by step video in the near-ish future. After I confer with my meth/CS education friends about how to do it in the best way for middle schoolers. Likely lots of 5 to 10 minute videos.

That's what the MOOC people always say.