Hombre de las cavernas loco. Otro hombre de las cavernas toma palo pero el palo fue para mí. Lucha de hombre de las cavernas !
Descripción
El hombre de las cavernas necesita un palo afilado para apuñalar a otro hombre de las cavernas. Otros hombres de las cavernas también intentan apuñalar con un palo afilado. El hombre de las cavernas puede afilar el palo, pinchar con el palo o bloquear los palos.
Si el hombre de las cavernas golpea a otro hombre de las cavernas con un palo afilado, otro hombre de las cavernas se escapará y yo venceré. Pero si otro hombre de las cavernas bloquea inteligentemente cuando estoy hurgando, no pasa nada, excepto que mi palo se vuelve contundente y necesito afilar nuevamente.
Hombre de las cavernas vago. Además, hombre de las cavernas tonto. El hombre de las cavernas no sabe qué hacer, por lo que el hombre de las cavernas necesita un sofisticado programa de computadora tecno para decirle al hombre de las cavernas qué hacer.
Entrada
La entrada de su programa será una historia de los eventos que han sucedido, donde S
significa agudizar (es decir, el hombre de las cavernas afiló su bastón), P
representa un golpe y B
representa un bloque. La entrada será un historial de ambos lados (usted y el oponente), por lo que sus movimientos y los del oponente se separarán con una coma ( ,
).
Entrada de ejemplo:
SPB,SBB
Esto significa que el jugador afiló su palo, luego golpeó, bloqueó y el oponente afiló, bloqueó y bloqueó nuevamente.
No recibirá ninguna entrada en el turno 1.
Salida
La salida es muy similar a la entrada (porque el hombre de las cavernas no es muy inteligente). Su programa debe salir S
para enfocar, P
para empujar y B
para bloquear. Solo se tendrá en cuenta el primer carácter de salida, y cualquier otra entrada se tratará como un B
comando (bloque).
S
: afilarAl afilar, la agudeza del palo del hombre de las cavernas aumenta en 1 y el palo recibe 1 empuje adicional. Cada golpe reduce la nitidez del palo en 1, y si la nitidez del palo es 0, es demasiado aburrido para tocar. La nitidez comienza en 0. Si la nitidez llega a 5, ¡el palo es una espada! (Vea abajo.)
Si el oponente golpea mientras usted está afilando (y tiene una nitidez> 0), ¡el oponente gana!
P
: empujarAl pinchar, la agudeza del palo del hombre de las cavernas se reduce en 1 y golpeas a tu oponente. Si tu oponente está afilando, ¡tú ganas! Si el oponente está empujando, tu palo golpea el palo de tu oponente y ambos se embotan (por 1 "unidad de nitidez"). Si el oponente está bloqueando, no pasa nada excepto que tu palo se vuelve más opaco.
Si tocas cuando la agudeza de tu palo es 5 o mayor, ¡tu palo se convierte en una espada y siempre ganas! (A menos que tu oponente también tenga una espada y también elija
P
; en ese caso, ambos se vuelven más opacos y pueden volver a palos si su agudeza cae por debajo de 5).No puedes empujar con una nitidez de 0. Si lo haces, no pasará nada.
B
: bloqueCuando bloqueas, no pasa nada cuando tu oponente golpea. Si tu oponente no está hurgando, el bloqueo no hace nada.
¡Bloquear no protege contra una espada, incluso si también tienes una!
Reglas y restricciones
Las reglas adicionales son:
- Su programa puede leer y escribir archivos en su propia carpeta (¡sin robar!) Si desea guardar datos, pero no puede acceder a nada fuera de él (y los hombres de las cavernas no tienen conexión a Internet en el desierto).
- Nota importante sobre los archivos : si guarda archivos, recuerde guardarlos en el directorio
players/YourBotsName/somefile.foo
. ¡El directorio de trabajo actual para su programa no será el de su programa!
- Nota importante sobre los archivos : si guarda archivos, recuerde guardarlos en el directorio
- Los hombres de las cavernas son justos: un programa no puede tener un código específico para otro programa, y los programas no pueden ayudarse entre sí. (Es posible que tenga varios programas, pero no pueden interactuar entre sí de ninguna manera).
- El juez cavernícola no es paciente. Si los hombres de las cavernas toman más de 100 turnos cada uno para decidir un ganador, el juez se aburre y ambos hombres de las cavernas pierden.
Si su programa infringe una regla o no sigue la especificación, el programa se descalifica, se elimina playerlist.txt
y todos los duelos se reinician desde el principio. Si su programa es descalificado, el líder del hombre de las cavernas (¡yo!) Comentará la publicación de su programa y explicará por qué. Si no está rompiendo ninguna regla, su programa se agregará a la tabla de clasificación. (Si su programa no está en la tabla de clasificación, no hay ningún comentario explicativo en su publicación, y publicó su programa antes de la hora de "Última actualización" a continuación, ¡dígaselo al líder del hombre de las cavernas! ¡Quizás lo olvidó!)
En su publicación, incluya:
- Un nombre.
- Un comando shell para ejecutar el programa (ej.
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, Etc.).- Nota: la entrada se agregará a esto como un argumento de línea de comando.
- Los hombres de las cavernas usan Ubuntu 14.04, así que asegúrese de que su código funcione (libremente) en él.
- Un número de versión, si su código funciona de manera diferente en diferentes versiones de su idioma elegido.
- Tu código (obviamente).
- Cómo compilar el código, si es necesario.
Código / prueba del controlador, ejemplo bot
El líder del hombre de las cavernas escribió el código de control en C ++ y lo publicó en un repositorio de Github . Puede ejecutar y probar su programa allí.
Un programa muy, muy simple (¡1 línea!) También se publica en las respuestas a continuación .
Puntuación y tabla de clasificación
Anotar es fácil. El hombre de las cavernas que gana obtiene un punto. ¡El hombre de las cavernas con más puntos después de 3 duelos contra cualquier otro hombre de las cavernas se convierte en el nuevo líder del hombre de las cavernas!
150 Watson
147 SpeculativeSylwester
146 Gruntt
141 BashMagnon
126 ChargerMan
125 PrisonRules
124 ViceLeader
122 MultiMarkov
122 CaveDoctor
120 RegExMan
120 Hodor
117 FancyTechnoAlgorithm
116 Semipatient
113 Watcher
108 BobCaves
105 MinimaxMan
104 Oracle
102 MaybeMarkov
97 Nash
95 Sicillian
95 Feint
95 Basilisk
94 SharpMan
93 Darwin
91 Nigel
91 JavaMan
88 Entertainer
88 CarefulBot
85 CaveMonkey
84 SSBBP
82 SirPokealot
79 MasterPoker
77 Unpredictable
76 IllogicalCaveman
75 SharpenBlockPoke
75 HuddleWolfWithStick
72 WoodenShield
68 PokeBackBot
68 PatientBlacksmith
66 PatientWolf
58 MonteCarloMan
58 BlindFury
56 BinaryCaveman
55 PokeBot
55 CavekidBlocks
53 Swordmaster
53 Blocker
52 NakedEarlyNerd
52 ModestCaveman
50 LatePokeBot
40 Trickster
39 SwordLover
38 ForeignCaveman
36 Swordsmith *
28 Touche
27 WantASword
27 FoolMeOnce
24 PeriodicalCavemanCicada
11 Aichmophobic
(esta tabla de clasificación se generó automáticamente por arte de magia)
Los jugadores marcados con un *
lanzamiento arrojaron algún tipo de error o excepción en algún momento; Estos jugadores también tienen un comentario en sus publicaciones.
Los jugadores que no pudieron ser incluidos en las pruebas por cualquier motivo (estos jugadores tendrán un comentario en sus mensajes que explican el problema): Monkey
, Elephant
, FacileFibonacci
, StudiousSylwester
.
Última actualización: 3 de agosto 00:15 (UTC).
fuente
Respuestas:
Darwin - C
¿Quién necesita estrategia, de todos modos? ¡Haga que un grupo de hombres de las cavernas se enfrenten y dejen que la selección natural haga el resto!
Utilizamos un modelo muy simple para el cerebro primitivo de un hombre de las cavernas: no tiene memoria y solo tiene en cuenta la agudeza del palo de él y de su oponente. Esos se usan como variables para un polinomio binario de algún orden finito. Cada acción (bloquear, enfocar y pinchar) tiene un polinomio asociado cuyo resultado determina la probabilidad relativa de elegir esta acción. Eso es prácticamente todo lo que hay que hacer: comience con algunos coeficientes aleatorios y optimice de forma iterativa.
El bot:
Compilar con:
gcc darwin.c -odarwin -w -O3
. Ejecutar con:./darwin <history>
.El bot lee los coeficientes de un archivo nombrado
program
en elplayers/Darwin
directorio (se puede especificar un archivo diferente como un segundo argumento de línea de comandos). Este programa parece funcionar bien:Guardar como
players/Darwin/program
.El siguiente es un programa que genera
program
archivos que pueden ser utilizados por el bot (no tiene que ser compilado si usa elprogram
archivo anterior):Compilar con:
gcc genprog.c -ogenprog -w -O3
. Ejecutar con:./genprog [output-filename]
.Watson
¿Cuál es el ADN de un hombre de las cavernas ganador? Quizás este chico tiene la respuesta:
Corre con:
python Watson.py
Watson es el producto de un algoritmo genético. A diferencia de Darwin, el dato genético esta vez es un programa real, escrito en un pequeño lenguaje específico de dominio (aquí traducido a Python).
La secuencia simple supera a los grandes jugadores
A este pequeño amigo le va sorprendentemente (o, tal vez, no tan sorprendentemente) bien, especialmente contra los líderes:
Corre con:
python SSBBP.py
fuente
players/Darwin
directorio.undefined reference to `fmax'
. --Editar-- No importa, realmente lo necesitaba-lm
.Hombre de las cavernas impredecible
Este hombre de las cavernas elige al azar cada ronda, pero le he explicado muy simplemente que ciertas acciones simplemente no tienen sentido a veces. Siéntase libre de copiar este código si desea expresar una lógica diferente.
Este es Ruby, guárdelo como 'unpredictable.rb' y ejecútelo con
ruby unpredictable.rb
fuente
no 'Block'
también debería ser si mi oponente tiene una espada.unless
para las declaracionesno 'Block'
yno 'Poke
'? (no 'Block' unless he.has_pointy_stick
)Doctor de las cavernas - Lua
"Perdí con los nuevos extranjeros, los noqueé para estudiarlos"
Cuando haya visto tantos pacientes como el médico de las cavernas, comenzará a comprender realmente la psique del hombre de las cavernas (o eso espero). El juego del doctor de las cavernas es pura estrategia, espera golpes que bloquea en un intento de desarmar a su oponente, pero no permitirá que ese oponente se acerque a hacer una espada. Intenta predecir cuándo es seguro afilar para no perder la ventaja.
Corre con:
lua CaveDoctor.lua
fuente
ExtranjeroCaveman
ForeignCaveman no tiene idea de lo que acabas de decir. Él solo ... hace cosas.
javac ForeignCaveman.java
entoncesjava ForeignCaveman
fuente
Vice-líder
Pomo de la puerta ♦ es el líder. ¡Quiero ser líder! ¡Sigue el programa súper inteligente para convertirte en líder!
Compilar:
javac ViceLeader.java
Ejecutar:java ViceLeader
.fuente
if (enemySharpness <= 4 || mySharpness >= 5)
vs==
?Quizás Markov 2.1
Creo que utiliza las cadenas de Markov para predecir lo que hará el otro hombre de las cavernas, pero solo miré brevemente la página de Wikipedia sobre las cadenas de Markov y decidí que tenía demasiado texto.
Intenta mantenerse con vida durante 30 rondas y luego construye una tabla con los cambios de estado actuales y siguientes, y reacciona a lo que cree que hará el otro hombre de las cavernas.
El código contiene muchas declaraciones innecesarias, pero funciona bastante bien.
EDITAR
Detectado un defecto en la lógica. Ahora en realidad hace algo cuando tiene una espada.
$ python3 players/MaybeMarkov/MaybeMarkov.py
fuente
PeriodicalCicadaCaveman
Este hombre de las cavernas bastante inteligente ha estudiado cierto error y se dio cuenta de que nadie puede ajustar su estilo de vida para aprovechar el número primo Cicada.
Se esconde / bloquea durante la mayor parte de su vida, pero ocasionalmente se asoma. ¿Seguro que es vulnerable a las espadas y pasa un ciclo completo con un palo sin punta, pero afilando su palo cuando es totalmente contundente? Eso es exactamente lo que los demás esperan de él ... no esta cigarra
para compilar: mcs program.cs para ejecutar mono program.exe
Editar: Cambié la nitidez: código ... si pincho, gano o mi palo se vuelve más opaco
Edit2: agregado en la sugerencia de Bobs
Editar: se cambió para empujar solo cuando está en la nitidez 2, si el palo alguna vez está en cero, el otro tipo podría hacer una espada.
fuente
mcs program.cs
lo compilará,mono program
lo ejecutará, pero deberá reemplazar elfoo.Dump();
s conSystem.Console.WriteLine(foo);
(o agregar un método de extensiónpublic static void Dump(this string value) { System.Console.WriteLine(value); }
).mcs
genera es<filename>.exe
, por ejemplo,program.cs
seríaprogram.exe
. Entonces el comando de ejecución seríamono program.exe
. (No tenía acceso a mono en el momento de mi comentario anterior)FantasíaTechnoAlgoritmo
Un sofisticado algoritmo techno para el sofisticado programa de computadora techno.
El hombre de las cavernas sigue perdiendo la batalla. Hombre de las cavernas enojado. Entonces, el hombre de las cavernas va a la escuela de computación y aprende el algoritmo.
Programa Python 2. Correr:
python fancytechnoalgorithm.py
fuente
python StickSharpener.py
).El vigilante
Él observa los movimientos de su oponente, siempre dejándolos mostrar su mano antes de atacar. Está particularmente preparado para aquellos que descuidan trabajar hacia una espada.
Nombre del archivo:
watcher.py
Correr:
python watcher.py
Basilisco
Busca destruir a quienes lo miran demasiado de cerca. Consistentemente vence al Observador, pero probablemente le irá peor en general.
Nombre del archivo:
basilisk.py
Correr:
python basilisk.py
Nash
Busca hacer irrelevantes las elecciones de su oponente, eligiendo cada movimiento con una probabilidad que explique sus riesgos y recompensas
Este no es exactamente el equilibrio de Nash (mi generador de estrategias tiene cierta inestabilidad), pero está cerca.
En aras de la curiosidad, estas son las estimaciones de la probabilidad de que este bot gane en cada estado del juego:
Nombre del archivo:
nash.py
Correr:
python nash.py
Finta
Se abre con un ataque rápido, para probar las defensas de su oponente.
Nombre del archivo:
feint.py
Correr:
python feint.py
LatePokeBot
El hermano pequeño de PokeBot. Nunca muestra debilidad, pero trata de pelear como su hermano mayor.
Nombre del archivo:
latepokebot.py
Correr:
python latepokebot.py
fuente
:
en Basilisco; Lo arreglé para ustedPokeBot
Escrito en rubí.
Corre con
ruby pokebot.rb
.Este bot no es muy inteligente; hace lo que el hombre de las cavernas promedio haría solo de todos modos.
fuente
PatientWolf v2.0
Afila si está aburrido, empuja si el enemigo tendrá una espada el próximo turno o si el enemigo está apagado, bloquea de lo contrario.
Corre con
EDITAR: gracias a @sylwester por señalar un error
fuente
PatientWolf.pl SB,SP
hace unP
ya que piensa que tiene un palo afilado.perl patientwolf.pl "SB,SP"
. Deberías hacermy($me,$him) = split/,/ $ARGV[0];
yif( @ARGV ) {print "S";exit}
.Hombre de las cavernas binario
Afilar, apuñalar, repetir
Basado en la idea de que el bloqueo es para mariquitas, este hombre de las cavernas alterna entre las dos opciones restantes.
Compilar con
javac BinaryCaveman.java
Corre con
java BinaryCaveman
EDITAR: Adventures in String Arrays ..... args.length () arroja un error. args.length siempre devuelve 1. args [0] .length () devuelve las longitudes de la primera cadena en la matriz.
EDIT 2: actualizado gracias a la ayuda de Doorknob, Brilliand y Sylwester. Gracias chicos.
fuente
P
oS
hace lo contrario. Y si aún no hay historia, él finge que la historia lo seríaP,
(lo que luego lo lleva a hacerS
primero).args[0].length()
, noargs.length
.CavekidBlocks
Un niño de las cavernas llorando y asustado puede parecer una presa fácil. No dejes que su cara bonita te engañe porque él sabe cómo bloquear.
Corre con
python3 cavekidblocks.py
ChargerMan
Este hombre de las cavernas es muy conservador. Intentará cargar su arma y solo atacará cuando sea necesario.
Corre con
python3 chargerman.py
Embaucador
Trickster no sabe cómo pelear, por lo que intenta confundir a otro hombre de las cavernas.
Corre con
python3 trickster.py
Desafortunadamente, después del commit acc74 , Trickster ya no funciona según lo planeado.
fuente
Hodor
Hodor no es muy agresivo. Le gusta permanecer en su escudo a menos que haya una buena oportunidad para atacar.
compilar con:
javac Hodor.java
y ejecutar con:java Hodor
código:
Editar: actualización de código menor
fuente
SB,BB
. Cuando otros hombres de las cavernas se portan mal en el primer turno, Hodor también se porta mal.Sylwester especulativo - Perl5
Sylwester especulativo quiere eliminar a los buscadores de espadas mirando los patrones y empujando cuando existe la posibilidad de que el oponente se agudice y se agudice cuando el oponente tenga más probabilidades de bloquear. Sin embargo, no lo hará si existe la posibilidad de que hubiera adivinado que él mismo se agudizará en el próximo movimiento y somos aún más cautelosos cuando decidimos afilar.
En cuanto a cuando el oponente es contundente, intenta ser agresivo, pero eventualmente comenzará a ahorrar para una espada cuando eso parezca infructuoso.
Para ejecutar en Linux simplemente agregue esto en playerlist.txt:
Fácil Fibonacci - Esquema R6RS
Además del primer movimiento, Facile Fibonacci bloquea cuando el turno es un número de Fibonacci (a partir de 0) y llena el resto con
PPSS..
y cambia cuando pasa el 8 a una secuencia interminable dePSS
ganar con una espada.Para ejecutar simplemente instale ikarus con
apt-get install ikarus
y agregue esto en playerlist.txt:Sylwester estudioso - Perl5
El estudioso Sylwester usa la misma táctica que el especulativo Sylwester, pero también mira los juegos anteriores para determinar dónde podría haber tomado una decisión equivocada.
Para ejecutar en Linux simplemente agregue esto a playerlist.txt
Edición estudiosa
No puedo reproducir los problemas que tuvo al
$0
no ser la ruta completa al script perl cuando se ejecuta con perl. También he retirado sus cambios y no veo cambios en el src CavemanDuels y es lo mismo que he estado ejecutando más de 20 veces sin el problema que está informando. Estoy empezando a temer que podría haber obtenido el script como un script bash en lugar de ejecutarlo mientras es ejecutable o como un argumento para Perl. Necesito más información para saber con certeza. Como prueba, hice esto y puedes hacer lo mismo para ver si obtienes el mismo resultado:fuente
$0
esbash
cuando se llama desde una línea de comando bash (que hace el controlador). Sinplayers/StudiousSylwester/foo.txt
embargo, podrías simplemente codificar .ikarus
y agregué mis pensamientos sobre$0
Studious.Herrero
Necesito un palo afilado. Si tiene un palo afilado, empuje. Yo no siento dolor.
Guardar como
swordsmith.f90
y compilar congfortran -o swordsmith swordsmith.f90
ejecutar como lo haría con cualquier ejecutable normales:./swordsmith
.fuente
PacienteHerrero
Este bot está escrito en R, úsalo
Rscript PatientBlacksmith.R
para activarlo.Mide la agudeza del palo del oponente: bloquea cuando está afilado, de lo contrario, tome tiempo para afilarlo. Cuando la propia nitidez alcance 5, empuje hasta que la nitidez desaparezca.
fuente
Reglas de la prisión, Haskell
La mujer de las cavernas piensa que el hombre de las cavernas y otros hombres de las cavernas deberían hablar, compartir el palo. Pero, oye, si debes luchar, lucha contra las reglas de la prisión. Encuentra jefe y ataca.
ViceLeader Alpha Caveman ahora; que el hombre de las cavernas debe luchar. Otros hombres de las cavernas luchan más tarde. Si mi hombre de las cavernas pierde, no se preocupe; él también peludo de todos modos.
Escrito en Haskell (¡vaya a la programación funcional!), Así que guárdelo como prisonrules.hs , luego compile con:
Y correr como:
fuente
Lo llamo JavaMan
nota: no tengo la intención de jugar golf de código ... pero si eres golfista y los espacios / líneas adicionales hacen que tus ojos sangren ... no dudes en cambiarlo
fuente
Pensamientos profundos, C
Código de hombre de las cavernas. El hombre de las cavernas piensa. Hombre de las cavernas hacer.
Yo hago las pruebas. Más pensamientos mejor.
fuente
Nigel
Nigel es un viejo hombre de las cavernas defensivo y paciente que prefiere ser táctico antes que atacar.
Es un script PHP, llame con
php nigel.php
fuente
Aichmophobic - Lua
De vez en cuando te empuja, pero solo hasta que el palo se afila demasiado. Cuando esto suceda, entrará en pánico y se enrollará en posición fetal.
Ejecútalo con:
lua aichmophobic.lua
fuente
Cuevas de Bob
Bob Caves es uno de los tipos más inteligentes de su cueva. Ha aprendido a contar con una mano (la otra está ocupada sosteniendo su palo). Él sabía de estos Juegos Olímpicos de la Edad de Piedra y quería participar.
Su estrategia principal es bloquear y afilar su palo hasta que tenga un buen palo afilado o el otro hombre de las cavernas también tenga uno afilado. ¡En este caso, Bob Caves intenta empujarlo!
Compilar
javac BobCaves.java
y ejecutar conjava BobCaves
Editar: ¡Bob ahora cuenta cuando hay algún bloque! (gracias a Mikey Mouse ). También afilará su bastón cuando el otro bastón cavernícola sea romo.
Edición 2: Método de conteo mejorado (gracias nuevamente a Mikey).
Edición 3: Hacer a Bob un poco más agresivo.
fuente
Gruntt
Gruntt está a la defensiva. Gruntt analiza otros movimientos de hombres de las cavernas para saber cómo empujarlos. Luego los empuja directamente a los ojos. Gruntt no es un buen hombre de las cavernas.
Compilar
javac Gruntt.java
y ejecutar conjava Gruntt
fuente
ArrayOutOfBoundsException
en el primer turno, y a veces genera múltiples acciones en otros turnos.¿Es un pajaro? ¿Es un avión? ¡Es RegExMan!
¡Intenta analizar tus secuencias súper aburridas con su poder especial RegEx primitivo!
Escrito en Python 2.7, ejecute con
python RegExMan.py [history]
fuente
Siciliano
¡Pero es tan simple! Todo lo que tengo que hacer es divino por lo que sé de otro hombre de las cavernas: ¿es él el tipo de hombre de las cavernas que bloquearía, afilaría o golpearía? Ahora, un hombre de las cavernas inteligente golpearía o bloquearía, porque sabría que solo un gran tonto se agudizaría y se expondría a los ataques. No soy un gran tonto, por lo que claramente no puedo agudizar. Pero otro hombre de las cavernas debe saber que no soy un gran tonto, y habría contado con eso, ¡así que claramente no puedo empujar ni bloquear!
Corre con:
Código:
fuente
bash-magnon
Los Bash-magnons fueron robustos y potentes. El cuerpo era generalmente pesado y sólido con una musculatura fuerte. La frente era bastante recta en lugar de inclinarse como en los neandertales, y solo con ligeros fruncidos. La cara era corta y ancha. El mentón era prominente. La capacidad cerebral era de aproximadamente 1.600 centímetros cúbicos (98 pies cúbicos), mayor que el promedio de los humanos modernos. Sin embargo, investigaciones recientes sugieren que las dimensiones físicas del llamado "Bash-Magnon" no son lo suficientemente diferentes de los humanos modernos como para justificar una designación separada.
Tengo un cerebro, me acuerdo.
Este es un auto ejecutable
./bash-magnon.sh
fuente
PokeBackBot
Simplemente adaptado de PokeBot:
Corre con
ruby pokebackbot.rb
.Utiliza la siguiente estrategia más simple y bloquea "pacientemente" durante una ronda antes de atacar.
fuente
SPS
(lo que parece razonable), pero hasta ahora PokeBot era el único.Maestro de la espada
Escrito en Python 3.4 (funciona con Python 3.x)
Trata de obtener una espada lo más rápido posible, pero ataca si tiene la posibilidad de golpearlo (agudeza> 0) y el enemigo también podría lastimarla (agudeza del enemigo> 0).
Bloquea solo si no tiene agudeza y el enemigo puede atacar.
Empezar con:
(asumí que lo guardas como
swordmaster.py
)Código rápido y feo:
(Configurar
dg
paraTrue
habilitar mensajes de depuración)fuente
S
,P
,S
,P
...FoolMeOnce.py
Guarda los movimientos de cada jugador para el primer duelo, luego repite con los mismos movimientos. Si el algoritmo del enemigo no es aleatorio, podemos predecir el mismo resultado y atacar solo cuando sabemos que ganaremos.
Escrito en python 3, lo más probable es que tengas que usar python3 FoolMeOnce.py. En la primera ronda, no estoy seguro de si obtenemos una cadena vacía o solo una coma, por lo que es posible que se necesiten algunos ajustes.
fuente