I'm a long time fan of the Final Fantasy series, going back FF1 on the NES. In fact, I often cite FF4 (FF2 US) as my favorite game of all time. I enjoyed it so much that it inspired me to learn how to program! One of my earliest Java applets was based on a Final Fantasy game and now, 15 years later, I'm at it again.
I had a blast playing FF13, so when I heard about its sequel I had to pick it up. The game is fun and all, but I've become slightly obsessed with a particular minigame: The Clock Paradox.
The rules of the game are simple. You are presented with a "clock" with some number of buttons around it. Each of these buttons is labeled with a number. Stepping on any of the buttons deactivates that button and moves the two hands of the clock to positions that are the distance away from that button specified by the labeled number. After activating your first button, you can only activate the buttons which are pointed at by the hands of the clock. Your goal is to deactivate all of the buttons on the clock. If both hands of the clock point to deactivated buttons and active buttons still remain, then you lose and must start over.
See this minigame in action in the video below:
You may not know this about me, but I'm not a real big fan of manual "guess and check". I would rather spend several hours building a model of the clock problem and implementing a depth first search to find the solution, than spend the 5 minutes of game time trying different combinations until I find one that works. Yes, I'm completely serious. Here it is.
I think that the reason why I'm drawn to this problem is that it bears a close relation to one of the Millennial Problems: P vs NP. In particular, the Clock Paradox is a special case of the Hamiltonian Path Problem on a directed graph (or digraph). We can turn the Clock Paradox into a digraph with the following construction: create a starting vertex, draw arcs to each position on the clock and place a vertex, and finally draw two arcs from each positions following the potential clock hands from that position. The Hamiltonian path is a sequence of arcs that will visit each vertex exactly one. If such a path exists, then the Clock Paradox is solvable.
This little minigame raises several serious mathematical questions:
- What percentage of the possible Clock Paradoxes are solvable?
- Is there a faster method of solving the Clock Paradox? Can it be done in polynomial time, or is it strictly exponential?
- Is there any practical advise topology can offer to help players solve these puzzles?
- Is there anything these puzzles can teach us about the general Hamiltonian Path Problem?
I don't claim to know the answers, but I would offer the following advise: see if you can identify a node with only one way in or out. If you can, then you know that you'll need to start or end. If all else fails, you can always cheat by plugging it into my sim!
That's all I have for today. Maybe there will be some rigged chocobo races in the future... kupo.