I programmed a simple solver in Python. The method by which I programed this solver could be used to solve many other logic games. In fact, you could easily abstract the pieces away. You need:
- a representation for a state of game (here, I use a list of cartesian coordinates, one per piece, the first element being for the piece that has to be moved to the center),
- a function to generate all legal moves for a given state game,
- a function that applies a move to a given game state, returning a new game state (it's easier than mutating the given game state for searching many alternatives at once).
- a predicate to test whether a game state is a solution (here, I simply check whether the first coordinate is the center of the board).
With this pieces, it's easy to do a brute-force search (here, I use a breath-first search which skips already seen game states).