Varios amigos me han recomendado este juego, y realmente me encantó. Es excelente para jugar en persona; además, promete ser muy fecundo para diseñar jugadores artificiales.
Lo pueden probar en
este sitio, contra otros jugadores humanos o contra algunos «bots» que tienen hechos.
Reglas del juegoSe coloca una ficha en la casilla central de una tira de siete casillas:

El objetivo de uno de los jugadores es llevar la ficha a la casilla en el extremo izquierdo, y el del otro es llevarla a la casilla en el extremo derecho.
Al comienzo de la partida, cada jugador dispone de cincuenta puntos.
En cada turno, se hace una pequeña licitación: cada jugador oferta en secreto una cantidad de puntos; luego, se revelan las ofertas, y el que ofertó más tiene derecho a mover la ficha una casilla hacia su objetivo. Si ambos ofertan la misma cantidad, ninguno de ellos mueve la ficha.
En cualquier caso, cada jugador pierde la cantidad de puntos que ofertó.
Las ofertas deben ser de al menos un punto, mientras se tengan puntos. Si un jugador se queda sin puntos antes que el otro, debe seguir jugando, ofertando cero puntos en cada turno.
Cuando un jugador logra su objetivo, es declarado ganador. Si ambos jugadores se quedan sin puntos antes de que esto suceda, se declara empate (sin importar dónde haya quedado la ficha).
Reglas para la competenciaLa competencia entre algoritmos se llevará a cabo de esta manera:
- Cada algoritmo competirá una vez contra cada uno de sus oponentes. El que gane más partidos será el vencedor.
- En caso de empate, se vuelve al punto 1. Los contadores de partidos ganados serán acumulativos.
Los algoritmos solamente podrán referirse al estado de la partida actual. Esto es: posición de la ficha, cantidad de puntos restantes de cada jugador e historial de las ofertas de cada jugador.
No tendrán memoria de lo que ocurrió en partidas pasadas. Dependiendo de los resultados de la competencia y de la complejidad que alcancen los algoritmos (y de pedidos o sugerencias de los participantes) podremos organizar en el futuro una competencia con algoritmos más flexibles, que puedan aprender de las partidas que jueguen.
Cómo y cuándo presentar los algoritmosHabrá tiempo de presentar algoritmos (sólo uno por persona) hasta el 18 de noviembre de 2007 al mediodía (hora de
Argentina).
Como en las competencias anteriores, no es necesario presentar algoritmos en forma de código fuente. Una buena descripción de la idea será suficiente (en la mayoría de los casos) para que yo escriba lo necesario.
No obstante, los jugadores que así lo deseen podrán facilitarme la tarea presentando código fuente, en un solo archivo compilable o interpretable.
Podrán escribir sus programas en
Unicon,
C,
C++,
D,
Java,
Ruby o
Python. Si desean usar algún otro lenguaje, consúltenme antes por favor.
Los programas deberán respetar el siguiente protocolo de entrada/salida:
- Imprimir la oferta en la salida estándar, en forma de número decimal. La salida deberá ser una línea de texto completa (con el carácter de fin de línea incluido).
- Leer de la entrada estándar una línea de texto completa.
- Si la línea dice «fin» significa que la partida terminó (ya sea normalmente o por una jugada inválida de alguno de los jugadores). El programa deberá terminar su ejecución.
De lo contrario, la línea leída será un número decimal igual a la oferta que hizo el oponente. - Volver al paso 1.
Si un programa hace una oferta ilegal (menor que uno o mayor que la cantidad de puntos que tenga, o distinta de cero si ya no tiene puntos) perderá la partida. Por supuesto, yo probaré cada programa que me envíen antes de la competencia, y daré tiempo a los jugadores a que modifiquen su código si se presenta algún problema.
Ante cualquier duda, no duden en consultar.
Espero sus algoritmos. ¡Suerte y no olviden reclutar a sus amigos y conocidos!