A playable online game. Not every possible starting position is solvable, so we have to take special care.
The problem is a brain-teaser, in the form of a probability puzzle. It has sparked endless debate. See the solution with a simulator.
Node.js does not support tail call optimization, but a trampoline has the same effect.