Perfectionist

A hardcore puzzle

Is this an original puzzle?

Yes. It was invented by Louigi Verona in 2016.


How are the boards generated?

The boards are completely random and are generated using a seeded Mersenne Twister pseudorandom number generator. This makes each board reproducible on demand.

Because each board is random, there is no guarantee that it will be perfectly solvable. In fact, the vast majority of boards are not perfectly solvable, and the goal is to find an optimal solution.

In the current implementation of Perfectionist the seed range is between 1 and 2147483647. Obviously, the amount of all boards possible is way larger than that, but for now 2 billion boards should be a good enough pool.

There are plans to try generating the so-called Null Boards, perfectly solvable boards. However, my initial experiments show that most of these boards are boring to play.


Can an optimal solution be mathematically calculated?

It is not clear, but seems unlikely at the moment. Solving Perfectionist seems to be closely related to the subset sum problem, which is NP-complete. This means that a solution to such a problem is relatively easy to verify, but there is no trivial way to find a solution quickly.

Of course, there are probably ways to find a solution using various heuristics, or focus on finding if not an optimal, then just a good enough solution. An attempt at this is being developed by Golen, whose code for a Perfectionist Solver can be found on GitHub.

In general, part of the interest of the puzzle is its depth, and the amount of complicated decision making that goes into solving a puzzle well.


Why is there only one board per day?

Since Perfectionist looks similar to many casual games, with colored blocks and numbers, the challenge is to get players to see Perfectionist for what it really is - a very satisfying, but also a challenging puzzle, the intellectual beauty of which can only be recognized through repeated attempts at a board. In previous incarnations of the game people would tend to try a board, get stuck, reload for a new board, get stuck again and lose interest.

Having Daily and Weekly Boards helps drive home the fact that each puzzle should be played several times, and that this is, in fact, the whole point. It is after the introduction of these periodical boards that I've noticed a sharp increase in the appreciation of the game from new players.

As you can see from the Roadmap, a number of features in the future will give players access to all the rated boards.


Can I access more boards to play?

There is a way to access all boards. The game accepts two parameters through the URL, and you can specify both the board seed and type of board. For instance:

https://louigiverona.com/perfectionist/?seed=939220089&board=q

The seed ranges from 0 to 2147483647. You can use larger numbers and even negative numbers, but then the server will not accept your result as legit, and so your score will not get stored in the global database.

There are currently two board types: "q" (stood for "Quick Play" in the original client, 6x8) and "f" ("Full Board", a 9x11).

The very important bit here is that although one can theoretically create two separate boards with the same seed: "q" and "f", the Perfectionist backend will accept only one of those - whichever comes first. This is by design. So, if someone plays a small board with seed 123 and saves the score, this will make it impossible to save scores for the large board based on the same seed 123: the board seed is treated as unique in the database. In theory that can be changed, but for now this is the state of things. Of course, due to the sheer amount of available boards, collisions are very unlikely anyway.


What platforms is the game supported on?

Currently, your best bet is a Desktop computer or an Android device.

The game is playable on iPhones, but iOS does not provide good support for PWAs (progressive web apps), which creates many difficulties when accessing the game from some Apple devices. For instance, Safari obstructs parts of the UI with its own top and bottom panels, making it impossible for users of certain iPhone models to return to the menu from the game board. Full Screen API, which works perfectly fine on Android devices and on the Desktop, seems to have no effect on the iPhones I've tried. Thus, iPhone users will either have to wait for a native client, or be sure to use Chrome for the game.

However, the game works beautifully on Android and Desktop. The codebase is crossplatform and is planned to be ported to native apps in the future.