jueves, agosto 08, 2013
Ignotum: código para probar estrategias
Hay otros sitios de competencias entre algoritmos que publican el código del «referí» para que los participantes puedan probar sus ideas antes de la competencia final; me pareció buena idea y la usaré en esta y también en futuras competencias.
En este archivo (update: corregí un sutil bug en el código, bajen el nuevo archivo) está el código básico del torneo. Los que sepan programar en Python podrán aprovecharlo para probar sus estrategias y elegir la mejor para enviar, y los que no quizá puedan usarlo igualmente para mirar la lógica y despejar dudas y, quién sabe, animarse y aprender a programar en Python :)
Aclaraciones:
El script necesita la versión 3 del lenguaje. Pueden usar el script especificando la cantidad de rondas a correr, así como los valores de N y K, en la línea de comandos.
Ante cualquier duda pueden comentar aquí o enviarme un mensaje.
lunes, agosto 05, 2013
Nueva competencia: Ignotum
Para esta competencia he elegido una variante del Datum que surgió conversando con algunos participantes.
Las reglas del Ignotum son básicamente las mismas que las del Datum, excepto por algunas diferencias cruciales. Veamos:
Reglas del juego
Juegan dos jugadores, usando un dado de N caras. Los jugadores no saben cuánto vale N.
En cada turno, un jugador toma el dado, lo arroja, y decide cuál de estas dos cosas hacer:
- Pasar el turno al otro jugador, anotándose los puntos que indica el dado.
- Mantener el turno, pero anotarle al otro jugador los puntos que indica el dado.
Esto se repite una y otra vez (cambiando o no de turno, según las decisiones de los jugadores), hasta que se cumplen K turnos. Los jugadores no saben cuánto vale K.
Reglas de la competencia
Para participar, deben enviarme una estrategia (una sola por participante) en forma de algoritmo que indique si pasa o no el turno, en función de estos datos:
- una lista de los números que ha mostrado el dado en sus turnos (el último será el del turno actual)
- los puntajes actuales (propio y del oponente)
No olviden que los algoritmos no conocen los valores de N y K.
Aclaración importante: implementaré todo en Python 3, que no tiene límites en el tamaño de los enteros que maneja.
Se agradecerá (aunque no es obligatorio) que envíen código en algún lenguaje de programación real, preferentemente Python 3. A veces es complicado interpretar pseudocódigo.
Cada par de estrategias jugará al menos 1000 partidas para cada combinación de N y K, alternando quién tiene el turno inicial.
La estrategia ganadora será la que gane más partidas en total.
Recibiré estrategias y/o comentarios hasta el 27 de septiembre. ¡Anímense!
sábado, agosto 03, 2013
Datum: Resultados
He aquí los resultados de la competencia de Datum tras dos millones de partidas:
Hay un empate técnico entre Ariel y Emilio (la diferencia entre sus puntajes no es estadísticamente significativa), así que los declaro a ambos ganadores.
Fue muy interesante comparar e implementar las distintas estrategias. Es posible que las dos ganadoras son equivalentes algorítmicamente, pero no controlé aún que así sea (ambas están expresadas de maneras distintas).
Pueden ver el código de la competencia aquí.
¡Gracias a todos y felicitaciones a Ariel y Emilio!
Puesto | Participante | Puntos | ||
1
| Ariel Futoransky | 11034886 | (18.39%) | |
Emilio Pazo Núñez | 11032288 | (18.39%) | ||
2 | Federico Hermo | 10906847 | (18.18%) | |
3 | Carlos Luna Mota | 10879416 | (18.13%) | |
4 | Luciano | 10545970 | (17.58%) | |
5 | Pablo Coll | 5600593 | (9.33%) |
Hay un empate técnico entre Ariel y Emilio (la diferencia entre sus puntajes no es estadísticamente significativa), así que los declaro a ambos ganadores.
Fue muy interesante comparar e implementar las distintas estrategias. Es posible que las dos ganadoras son equivalentes algorítmicamente, pero no controlé aún que así sea (ambas están expresadas de maneras distintas).
Pueden ver el código de la competencia aquí.
¡Gracias a todos y felicitaciones a Ariel y Emilio!
Suscribirse a:
Entradas (Atom)