¡Es mi 17 cumpleaños y estás invitado a mi fiesta!
Y como siempre en las fiestas, habrá pastel.
Un pastel ...
Y necesitas tanto como sea posible.
Como esta es una fiesta justa, cada uno de nosotros dirá cuánto de mi pastel queremos y la persona que dijo la cantidad más pequeña lo conseguirá. Luego, todos los demás pueden repetir el proceso hasta que se acabe el pastel.
Reto
- Dada la entrada a través de argumentos de línea de comando en forma de
total-degrees degrees-left total-people people-left
, salida a salida estándarinteger-bid-in-degrees
. - Si su oferta fue la más baja, recibirá esa cantidad de pastel y estará fuera para la ronda.
- Si su oferta no fue la más baja, su bot podrá ofertar por el pastel restante.
- En el caso de que las ofertas más bajas sean las mismas, la persona eliminada será elegida al azar.
- Al final de una ronda, una vez que todo el pastel se ha ido o no queda nadie para pujar, ¡la persona con más pastel gana!
- En el caso al final de una ronda y dos personas tienen la porción más grande del mismo tamaño, el ganador se elige al azar de las entradas del sorteo.
Jugabilidad
- Habrá 17 rondas, el ganador general será la entrada con más victorias en general.
- En caso de empate, se jugarán rondas hasta que haya un claro ganador.
- Cada día, actualizaré los puntajes actuales para que las personas puedan actualizar su entrada.
Sumisión
Deberías escribir tu entrada como
Nombre del bot, idioma
Insert Code Here
Explicación / cosas al azar aquí
Si su entrada no está formateada de esta manera, el controlador NO podrá ejecutar su entrada. Si descubro que esto le sucedió a su entrada, se lo notificaré en un comentario y / o editaré la respuesta en el formato correcto.
Su entrada y almacenamiento de archivos
- Su bot puede almacenar archivos en el
./data/
directorio y en ningún otro lugar.- No es necesario, pero guarde sus archivos como
botname*
- No puede escribir archivos en este formato si
botname
no es el nombre de su entrada. - Esto significa que puede sobrescribir otros archivos que encuentre que no aparecen en este formato. No deberías hacer esto deliberadamente, por favor, diviértete.
- Su bot no debe asumir que los archivos que requiere están presentes, pero puede suponer que
./data/
existen. - Esto se debe a que ocasionalmente borro el
./data
directorio, lo haré cuando comiencen las rondas. (Pero no entre ellos)
- No es necesario, pero guarde sus archivos como
- Es posible que su bot no elimine archivos en absoluto
- Su bot solo puede leer archivos en el
./data/
directorio- Esto significa que puede mirar otros archivos de entradas
Resultados:
¡Meek ganó el concurso! Bien hecho @ Cabbie407
Y ahora para algunas estadísticas aleatorias:
Una lista de las posiciones en las que entró cada bot: (¡Bien hecho a cualquier bot que aparezca en esta lista, llegaste al top 5 al menos una vez!)
Meek, Meek, Eidetic, Eidetic, Meek, Eidetic, Eidetic, Meek, Meek, Meek, Saucy, Meek, Givemethecake, Givemethecake, Givemethecake, Meek, Eidetic
Eidetic, Eidetic, Meek, AlCakeSurfer, Eidetic, AlCakeSurfer, Meek, MyFairPlusAThird, Eidetic, Eidetic, Eidetic, Eidetic, MyFairPlusAThird, MyFairPlusAThird, Meek, MyFairPlusAThird, AlCakeSurfer
Reallythecake, AlCakeSurfer, AlCakeSurfer, Meek, AlCakeSurfer, Meek, AlCakeSurfer, AlCakeSurfer, Reallythecake, AlCakeSurfer, Meek, MyFairPlusAThird, Eidetic, Eidetic, Eidetic, Eidetic, Reallythecake
AlCakeSurfer, Reallythecake, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, Eidetic, AlCakeSurfer, MyFairPlusAThird, MyFairPlusAThird, Relin, mi
bill, MyFairPlusAThird, bill, bill, bill, bill, Relinquisher, Relinquisher, MyFairPlusAThird, Relinquisher, bill, Reallythecake, bill, ALittleOffTheTop, ALittleOffTheTop, bill, bill
El archivo completo de registro de la cometa mientras se ejecuta se puede encontrar aquí . Perdón por el cambio de formato a la mitad.
No volveré a ejecutar el concurso, si desea publicar más entradas, puede hacerlo, el controlador se puede encontrar en mi repositorio de github para este concurso .
fuente
{u'StatelyImitator': 719, u'Dieter': 4, u'Reallythecake': 0, u'Greedy': 0, u'Meek': 2, u'FlamingChainsaw': 0, u'Slim': 0, u'CharityBot': 0, u'Gentleman': 297, u'ALittleOffTheTop': 256, u'EatThe\u03c0': 0, u'Pig': 0, u'CakeEater': 330, u'BobBarker': 0, u'FloorBot': 5, u'Fatbot5000': 296, u'Moses': 360, u'Magician': 720, u'Hungry': 257, u'Imitator': 354} [u'Magician']
,. Si su bot tiene una puntuación de 0, está haciendo algo mal.Respuestas:
Meek, awk
Vi esto una vez en una simulación.
fuente
Mago, Java
El número 720 es mágico.
Esto
seestaba destinado a probar el controlador y esnouna entrada grave.fuente
Slim, Python 2
Este bot está a dieta.
fuente
SadBot :(, C ++
Anteriormente FairBot
FairBot solo quiere una porción igual :(
Quiere dividir el pastel de manera uniforme entre todos los participantes.
(Sin embargo, espera que los otros bots lo saqueen porque sabe que son malos)
(Como realmente. Está solo, solo quiere que a los otros robots les guste)
(Acaba de salir de una mala relación y está pasando por un mal momento, así que si pudieras darle una palmadita en la espalda y una sonrisa para que se sienta mejor, realmente significaría mucho).
EDITAR cambió el programa para recibir información de argv / c en lugar de stdin (el bot justo todavía está triste ... Él quiere cambiar su nombre a sadbot (que es por eso que quiere pastel))
fuente
Halver, Ruby
Escrupulosamente, impecablemente justo. La mitad del pastel para mí, la mitad del pastel para todos los demás.
fuente
CharityBot, Python 2
¡Agrega otro pastel a la mezcla!
(El controlador verá esto como una solicitud de pastel 0, en realidad no se agregará al tamaño del pastel)
fuente
Imitador señorial, rubí
Variante de Imitator (si prefiere solo una entrada por jugador, esta reemplaza a esa). Mantiene un seguimiento preciso de la porción más grande ya tomada, y siempre ofrece lo suficiente como para superar esa porción. Tampoco ofertará más bajo que su parte equitativa del resto. Asume que ya existe un directorio './data' de lectura / escritura; los archivos pueden estar allí o no.
fuente
Dieter, Java
No quiere apostar por demasiado pastel, por lo que elige una porción aleatoria pequeña pero garantizada .
fuente
Motosierra llameante, Java
¿Alguna vez has intentado organizar un concurso de cortar pasteles con una motosierra? Bueno, ahora lo tienes. Es bastante disruptivo.
fuente
Caballero, Java
Espera a las personas que comen una porción justa o menos antes de comer cualquier pastel. Para evitar que el codicioso obtenga pastel extra, toma la porción más grande posible.
fuente
Bob Barker, Java
Probablemente, esto será reemplazado con una solución más pensada más adelante, pero tengo curiosidad por saber si esto funcionará. Esto es solo para atrapar a cualquier bot que intente obtener el máximo, y hacer una estrategia modificada de Price is Right para robar su respuesta. Podría conducir a una escalada con sustracciones de números enteros cada vez mayores, eso sería genial.
EDITAR: comienza la escalada, contra-publicación contra FloorBot
fuente
args[1]
a int antes de hacer la resta.Eidetic, Python 2
Ejecuté este bot en el controlador un par de veces para entrenarlo un poco, recuerda las ofertas requeridas para ganar cada ronda y luego, una vez entrenado, sale al mundo real y vota con el resto de ellos.
fuente
AlCakeBot, Python
Esta es mi primera publicación PCG; Espero que esto funcione según lo previsto ...
Me encanta el pastel. No importa de qué tipo. Mis colegas lo saben. Y también mi bot. Si toda la torta todavía está allí, ofertará por menos de la mitad, con la esperanza de obtener la porción más grande de inmediato. De lo contrario, debe ofertar por algo entre la mitad del pastel restante y todo el pastel restante, utilizando un seno cuadrado como función de ponderación (
½ + sin² (fraction gone) / 2
). El razonamiento es que debería haber una posibilidad de una porción general más grande (pero fraccionalmente más pequeña) al principio del juego y también tiene poco sentido tratar de ser un caballero al final del juego.Como no estoy muy interesado en la programación, agradeceré cualquier error señalado. Ahora comamos pastel = D
fuente
Saucy, Ruby
Saucy está dispuesta a aceptar un poco menos de la mitad del pastel restante, siempre que sea más de lo que cualquier otra persona haya recibido o pueda obtener (según la salsa secreta).
fuente
CoffeeJunkie, Coffeescript
¿Qué es exactamente un pastel sin una buena taza de café?
El CoffeeJunkie prefiere el café en lugar de una rebanada de pastel, pero sin embargo quiere probar un poco. Siempre será justo con los demás participantes e intentará recordar lo que sucedió con el último pastel. Sin embargo, su consumo excesivo de café ha debilitado sus recuerdos ...
fuente
npm install -g coffee-script; coffee CoffeeJunkie.coffee
Sabotaje señorial, rubí
Este bot decidió que para eliminar la competencia, no debería ser deportivo.
Este es un clon de Stately Imitator, excepto que este desordena los archivos de persistencia de Stately Imitator (ya que no tienen el prefijo con el nombre del bot) para que tome las decisiones equivocadas y se elija al final.
fuente
Comerciante, R
Realiza un seguimiento de la evolución de la proporción de grados restantes frente a personas y, cuando esa proporción comienza a disminuir, solicita una porción razonablemente justa, de lo contrario, solicita el pastel restante. Invocado usando
Rscript trader.r total-degrees degrees-left total-people people-left
.fuente
IWMBAICBIWT, Python
IWMBAICBIWT (era mi cumpleaños y lloré porque quería) supone que existe una relación entre los grados restantes y la cantidad de personas que quedan. ¡Esperemos que funcione!
Debería funcionar en todas las pitones.
Editar:
Almacenar
sys.argv
entradas fue un poco despilfarrador ...fuente
degreesleft = int(inputs[2]); peopleleft = int(inputs[4])
y está haciendo una oferta 1 todo el tiempoinvitado, Python 2
fuente
proyecto de ley, Python 2
Una apuesta justa.
fuente
AlCakeSurfer, Python
Como AlCakeBot lo hizo tan mal (y espero que lo haga aún peor en el concurso) aquí está mi segunda entrada. yo lo llamé Surfer, porque tiene una función de onda ascendente y descendente muy agradable que lo hace sentir como un surfista.
En principio, él puja según
cos² (x * pi)
dóndex
está la fracción de pastel que se ha tomado. Esta ola de surf se modifica con una función de ponderación que hace que comience con menos de la mitad del pastel, reduce sus ofertas a poco más de una parte justa cuando la mitad del pastel desaparece y luego vuelve a acelerar. a pujar por el pastel entero más tarde. Nunca ofertará menos que una parte justa del pastel restante más el 5% (es decir, el porcentaje del pastel completo).Tenga en cuenta que si bien pueden ser hermanos, si obtiene una porción significativamente más grande que AlCakeBot, este último ni siquiera obtiene una migaja de eso. ¡Compartirían chocolate o galletas, pero no pastel!
fuente
Hambriento, Java
Siempre quiere su parte justa del pastel restante.
fuente
Imitador, rubí
El objetivo es obtener más pastel que nadie, no maximizar su pastel. Por lo tanto, este bot no se conformará con menos de lo que los bots anteriores ya han tomado. (Esta versión usa heurística para esa verificación, acabo de notar que en realidad se nos permite guardar el estado, por lo que probablemente publicaré una variante con estado más adelante).
fuente
Realmente el pastel, Bash
Y aquí hay una foto del pastel real.
fuente
Cake Eater, Java
Se come pastel. Eso es todo.
fuente
Renunciante, Java
Una variante básica de mi otro bot, Impaciente. Este intenta tomar todo al principio, pero a medida que más y más invitados obtienen su parte, su deseo de obtener el máximo posible disminuye lentamente. No estoy demasiado metido en este; Solo quiero ver qué tan bien lo hace.
fuente
ALittleExtra, sh
Solo quiero un poco más, se vuelve menos codicioso a medida que el pastel disminuye
fuente
MyFairPlusAThird, sh
fuente
EatTheπ, Node.js
Realmente le gusta π, y piensa que el pastel
medioes π.fuente
var totalπ=process.argv[2], πLeft=process.argv[3], totalPeople=process.argv[4], peopleLeft=process.argv[5];
para que esto funcione con el controlador. Obtuvo 97 de 3600 en el campo de 41 bots.Un poco fuera de la cima, Python 2
Dado que el algoritmo "perfecto" intenta dividir el pastel de manera uniforme entre los bots, vamos a tomar un poco menos que eso. Exige su parte justa total del pastel general, incluso en rondas posteriores, pero sesga ese número hacia arriba ya que se basa en la cantidad de personas que quedan.
No he programado en Python en mucho tiempo, así que avíseme si mi código está roto ...
fuente