The N-Puzzle July 31, 2012 a* algorithm diy game god mode heuristics implementation irda* n-puzzle puzzle random research shuffle solvability +