The Rubik's Cube and combinatorial optimization
I doubt it's possible to find a person who hasn't heard about the Rubik's Cube, so I'm not going to repeat the Wikipedia description (https://en.wikipedia.org/wiki/Rubik%27s_Cube) of this puzzle, but rather focus on the connections it has to mathematics and computer science. If it's not explicitly stated, by "cube" I mean the 3Ă—3 classic Rubik's Cube. There are lots of variations based on the original 3Ă—3 puzzle, but they are still far less popular than the classic invention.
Despite being quite simple in terms of mechanics and the task at hand, the cube is quite a tricky object in terms of all the transformations we can make by possible rotations of its sides. It was calculated that in total, the cube has ~4.33 Ă— 1019 distinct states reachable by rotating it. That's only the states that are reachable without disassembling the cube; by taking it apart and then assembling...