Problema de los caballos:
Se desea construir una aplicación que utiliza un tablero de ajedrez y caballos que el usuario puede posicionar. Esta aplicación debe permitirle al usuario insertar en el tablero de ajedrez caballos blancos y negros en las posiciones que desee. La cantidad de caballos blancos debe ser igual a la cantidad de caballos negros. A partir de una configuración establecida por el usuario, la aplicación debe mostrar paso a paso como llegar a una configuración donde los caballos blancos están en la posición que tenían los caballos negros al principio, y los caballos negros deben estar en la posición donde se encontraban los caballos blancos al principio. Por ejemplo, si el usuario diseñó la siguiente configuración con dos caballos blancos y dos negros:
N N
B B
Donde las B representan las posiciones donde se encuentran los caballos blancos, y las N los negros, La aplicación debe ir mostrando las posiciones validas que se van moviendo los caballos, comenzando por las blancas, para llegar a la configuración final:
N N
B B
Para realizar el algoritmo que busca la configuración final, se debe utilizar un árbol general. La aplicación debe permitir al usuario elaborar las configuraciones que desee gráficamente, y mostrar los pasos también gráficamente hasta la posición final.