Jack Kutilek / Writing / Visual Sokoban Proofs

This is Draknek's Splitting Headache. Have you played it? Do you know the rules?


Levels 4 and 5, annotated

Yes, you do. In each level, let's map out the different equivalent states of the starting slime. And note where splitting pushes are possible, too.

We are looking for patterns, and insights - taking a step up the abstraction ladder.


Levels 6 and 8, annotated

There are some cool patterns here. It is easier to search through the state space of each level with these visual maps as our guide.


Levels 9 and 7*, annotated

This is the best one. Level 6*.


Level 6*, annotated

Let's take a closer look at this one. See if we can make a complete map.


Level 6*, partially explored

-- it doesn't seem like we can, at least not in any reasonable amount of time. And it's just becoming a mess.

Maybe we can map out its solutions, though. Here are the ones I found. They are each different in a significant way, but some are more similar to each other than others.


Discovered solutions of Level 6*

And actually, a lot of this space is not really needed when we are thinking more abstractly... we can unwrap it this way...


Transforming the presentation of Level 6*

And then when we look at the solutions in this format...


Solutions of Level 6*, transformed

Is this simpler? Easier to read? Does it highlight differences in solutions better? I dunno, but it's kinda neat.


~~~

I remembered these drawing when I was working on my own sokoban client. The simple style was perfect for small visuals of moves in the timeline.


Jack's Sokoban - Microban 1

But in longer solutions, in bigger levels, the timeline turns into a sea of lines; no clear distinction between moves, no clear representation of intent or order.


messy

I want to group sets of moves into metamoves, show higher level steps of the solution with distinct purposes and sub-goals. I want to prove why moves are made, why this is the solution.

Let's make some drawings again.


~~~

We start with a Sokoban puzzle, and mark the dead tiles. Note the forced moves, even if we can't technically make them yet. Note more dead cells and unreachable areas... and more forced moves. Reorder some of our moves to resolve order-of-operations issues. Rinse and repeat - eventually we reach the solution.

Click the images to open them up big in a new tab.


Yoshio Murase's Puzzle 13, proved

Let's do some more. We'll start by noting down various observations that will motivate steps in our proof. Here we take note of regions that equivalently close a door, and free loops that are needed to make certain turns. We continue to draw boxes around changes to the sequence in each line.


Microban 71, proved

This next one is pretty similar, though a little more complex.


Microban 124, proved

Now let's try grouping steps by shared sub-goals.


Microban 89, proved

And try reducing distracting repeated steps in the image.


Minicosmos 24, proved

This last one has some fun 'active region' swaps in the solution.


Minicosmos 26, proved

I want to make an application that helps to create these...

~~~

Jack Kutilek
August 2023

<< back