Cita:
Iniciado por NSD Permitanme revivir un desafio anterior, @Pantaláimon estaba comparando los resultados de mi algoritmo con los del tuyo para hacerlo funcionar siempre y me he topado con que el tuyo tambien falla en determinadas circunstancias por ejemplo en esta:
http://jsfiddle.net/2mt8q/2/ marlanga ya lo ha comentado. El camino es óptimo aunque no recorra todas las casillas. ¿Por qué? Porque no siempre se pueden recorrer todas las casillas. El caso más simple es un tablero 3x3 que lo empiezas desde una casilla lateral que no sea esquina. Pruébalo a lápiz y papel, no podrás recorrerlas todas.
Supongamos para simplificar que en un tablero de ajedrez la casilla superior izquierda siempre es blanca. Entonces, dado un tablero de ajedrez de lados impares si una torre empieza en una casilla negra no podrá recorrer todas las casillas del tablero si se pone la condición de recorrerlas sólo una vez.
La explicación es sencilla:
1) En un tablero de lados impares siempre hay una casilla más de blancas que de negras.
2) Si una torre empieza en un color X y acaba en el color Y habrá recorrido el mismo número de casillas de cada color.
3) Si una torre empieza en un color X y acaba en el color X habrá recorrido una casilla más de color X que de color Y
De manera que la única opción para recorrer todas las casillas en un tablero de ajedrez de lados impares es empezar por una casilla blanca. Traduciendo para TRON, sólo se podrán recorrer todas las celdas en un tablero de lados impares si la suma de coordenadas iniciales es par.
Es un tema al que le di bastantes vueltas cuando salió el problema. He de confesar que consulté en otro foro pues vi que ocurría eso pero no era capaz de demostrarlo y con ello asegurar que hacía un camino óptimo hasta que me dieron esta
magnífica demostración.
Un saludo!