2

This is a continuation of a question I asked here. The puzzle Icosoku is now described by Wikipedia as: "The puzzle frame is a blue plastic icosahedron, and the pieces are 20 white equilateral-triangular snap-in tiles with black dots and 12 yellow pins for the corners. The pins are printed with the numbers from 1 to 12, and the triangular tiles have up to three dots in each of their corners. The object of the game is, for any arrangement of the pins, to choose the positions and orientations of the triangles so that the total number of dots on the five joining corners of each pin equals the number of the pin. The manufacturer asserts that there is a solution for each pin arrangement. The puzzle is shipped in a solved state. The pins are not suitable for children under three, but this toy is otherwise suitable for all ages."

My question is how can one prove that there is a solution for each pin arrangement, as the manufacturer asserts? There are 12 factorial ways of arranging the pins (less by a factor of 1/120 if one considers the symmetry of the icosahedron), so using brute force to prove this might be a bit challenging.

Craig Feinstein
  • 301
  • 1
  • 11
  • This could be hard to answer without knowing the dot distribution. You can find the dot distribution in https://github.com/SethosII/icosoku-solver/blob/master/src/icosoku/IcoSoku.java, in the variable pieceNumbers. – Yuval Filmus Oct 29 '18 at 17:59

1 Answers1

1

You are right, the author of the game did not provide any hint to why IcoSoKu always has a solution. The latest product page is quite cheeky:

With the perfect geometry of an icosahedron, Icosoku can be solved every single try!

I don't know any mathematical proof, but Prof. Agostino Dovier and I solved the problem via brute-force, because you don't need to solve 12! instances:

  • we can impose the first vertex (chosen arbitrarily) to hold pin 1;
  • we can still rotate the icosahedron around the axis that goes through the first vertex (and the opposite one), so for the second vertex, an arbitrary neighbour of the first vertex, we can impose that it holds the pin with the smallest pin number between the neighbours of the first vertex;
  • we can still mirror the icosahedron (think of it as playing by looking through an actual mirror), and since the tile set is unchanged by this operation (this symmetry-breaking argument wouldn't work otherwise!) we need to solve only one between any instance and its mirrored version.

You can read the details in the paper or in the repo for the software we developed, but I computed the unique 3 991 680 instances and their solutions, solving IcoSoKu I guess :)