Todos jugamos alguna vez al gato. Hallamos pronto que no era un juego difícil de dominar. Vamos, incluso probablemente dedujimos que después de la primera jugada en el centro, si el rival no tira en las esquinas pierde irremediablemente. Uno olvida rápidamente este tipo de juegos, pues no representa ningún reto. Pero en realidad, sí puede serlo. Por ejemplo, a los alumnos en los primeros años de las carreras que tienen que ver con programación, bien puede ser una tarea a programar. Ahí coinciden algunas ideas interesantes, por ejemplo, la valoración de las posiciones a partir del algoritmo minimax, el cual se usa incluso en la valoración de las posiciones de ajedrez.
Hace unos días estaba yo en el trafico capitalino, atorado a la altura de Polanco, y pensaba en la inmortalidad del cangrejo y en cuántas posibles posiciones se pueden tener en el juego del gato, es decir, ¿cuántas posiciones del gato se pueden dar desde la primera jugada hasta que el juego termina? Pensaba que en realidad requiero conocer la cuarta parte de todas las configuraciones (o posiciones posibles), pues finalmente el gato tiene una simetría de la cual se puede sacar ventaja. ¿Es cierto esto?
Asi pues, lanzo el siguiente reto a los lectores/programadores binarios de unocero: Hágase un programa que genere todas las posibles configuraciones del gato, desde el inicio hasta el final. Guárdense todas las posiciones en un archivo de texto. Por ejemplo, quien escriba un programa de esta naturaleza debería entregarme un texto aproximadamente como éste:
bbb
bxb
bbb
obb
bxb
bbb
obb
bxb
xbb
en donde “b” es una casilla vacía. Desde luego, las otras dos letras son “o” y “x”.
Se piden solamente las configuraciones o posiciones legales. No se valen cosas como ésta:
xxx
bbb
bbb
por ejemplo.
¿El premio? Una taza con el logotipo de la Morsa a la mejor solución. Esto solamente aplica a los programadores que vivan en el DF (mandar a provincia o a otros países una taza es estúpidamente costoso). En caso de que los concursantes sean de otros países o de la provincia mexicana, el premio será una memoria USB de al menos 16 GBytes y se les enviará por correo certificado. Y sí, sé que no son los grandes premios pero mientras no tengamos patrocinadores, esto es lo que hay.
Evidentemente quien gane será anunciado en unocero y hasta tendrá sus quince minutos de fama.
Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto. Así que “en sus marcas, listos, ¡fuego!”