Exponential Idle has a few mini-game puzzles. They vary in difficulty and the hardest puzzle is the expert Arrow Puzzle. I spent many hours trying to solve it in game and eventually spent an afternoon to build an iOS app in Swift using SwiftUI to enable me to experiment quickly and solve different problematic instances.

The results? I can solve the puzzle typically in under 10 minutes. Just break it down into the problematic instances, and solve them separately!

How does the expert Arrow Puzzle work?

The puzzle consists of a hexagonal grid of side length 4 where each cell can be in one of six states. Tapping on a cell ‘adds one’ to the cell’s state and all of the cell’s neighbours. By ‘adds one’ I mean if the cell’s state was labeled zero to 5, then ‘adds one’ would be addition modulo 6. But, the cells states are labeled 1 to 6… but it’s the same. For example, if a cell is on state 3 and has a neighbour in state 6, the cell becomes state 4 and the neighbour state 1.

The aim of the game is to permute the states of each hex cell in the grid so that they are all one.

Why is it called the Arrow Puzzle? The puzzle represents each state as an arrow pointing in one of six directions, but I find it easier to understand the puzzle when it’s shown with numbers instead of arrows.

Arrow Puzzle Example.jpeg

What makes the puzzle so difficult?

The puzzle can be simplified so that cells only have two states instead of six. Six states can be interpreted as three versions of the two state version existing simultaneously together.

Exponential Idle does not allow experimentation with the grid after it had been solved. This makes it harder to understand the structure because it’s easy to get lost when performing transformations or to perform a sequence that is essentially the identity transformation.

On the other hand, I did identify how to map between some minimal states, but not how to solve them, that’s where the app came in.

iOS App

How did I overcome this pesky problem? I built an iOS app. 😉

The surprising thing was that it took me an afternoon to build - maybe not so surprising considering the complexity, but hey, I was surprised that I finished so quickly.

The results? I could solve most instances of the puzzle in at most 10 minutes, but typically around the four to five minute mark. The key thing which helped the most was being able to experiment solving various patterns.

Find it on Github here.