Caveman fou. Un autre homme des cavernes prenait un bâton, mais le bâton était pour moi. Caveman combat !
La description
Caveman a besoin d'un bâton pointu pour poignarder un autre homme des cavernes. Un autre homme des cavernes essaie également de poignarder avec un bâton pointu. Un homme des cavernes peut aiguiser un bâton, piquer avec un bâton ou bloquer des bâtons glacés.
Si l'homme des cavernes pique un autre homme des cavernes avec un bâton pointu, un autre homme des cavernes s'enfuit et me gagne. Mais si un autre homme des cavernes bloquait intelligemment quand je cinglais, rien ne se passera si mon bâton ne s’émousse pas et que je dois redresser la peau.
Caveman paresseux. Aussi, homme des cavernes muet. Caveman ne sait pas quoi faire, alors Caveman a besoin d'un programme informatique sophistiqué pour dire à Caveman quoi faire.
Contribution
La contribution de votre programme sera un historique des événements qui se sont produits, où S
signifie «aiguise» (c'est-à-dire que l'homme des cavernes aiguisé son bâton), P
signifie «poke» et « B
bloc». L'entrée sera une histoire des deux côtés (vous et l'adversaire), de sorte que vos mouvements et ceux de l'adversaire seront séparés par une virgule ( ,
).
Exemple d'entrée:
SPB,SBB
Cela signifie que le joueur aiguisé son bâton, puis piqué, puis bloqué, et que l'adversaire aiguisé, puis bloqué, puis bloqué à nouveau.
Vous ne recevrez aucune entrée au tour 1.
Sortie
La sortie est très similaire à l'entrée (parce que l'homme des cavernes n'est pas très intelligent). Votre programme doit générer des résultats S
pour affiner, P
pour poke et B
pour bloquer. Seul le premier caractère de la sortie sera pris en compte et toute autre entrée sera traitée comme une B
commande (bloc).
S
: aiguiserLors de l'affûtage, la netteté du bâton de l'homme des cavernes augmente de 1 et le bâton reçoit 1 poke supplémentaire. Chaque poke réduit la netteté du stick de 1, et si la netteté du stick est 0, elle est trop terne pour que l'on puisse la piquer. La netteté commence à 0. Si la netteté atteint 5, le bâton est une épée! (Voir ci-dessous.)
Si l’adversaire pique pendant que vous affilez (et qu’il a une netteté> 0), l’opposant gagne!
P
: pousséeLorsque vous piquez, la netteté du bâton de l'homme des cavernes diminue de 1 et vous piquez votre adversaire! Si votre adversaire est en train d'affûter, vous gagnez! Si l'adversaire pique, votre bâton frappe le bâton de votre adversaire et ils deviennent tous les deux plus ternes (de 1 "unité de netteté"). Si l'adversaire bloque, rien ne se passe si ce n'est que votre bâton devient plus terne.
Si vous piquez quand la netteté de votre bâton est de 5 ou plus, votre bâton devient une épée et vous gagnez toujours ! (À moins que votre adversaire ait aussi choisi une épée et l'ait choisi
P
; dans ce cas, ils deviennent tous les deux plus ternes et peuvent redevenir des bâtons si leur acuité est inférieure à 5.)Vous ne pouvez pas piquer avec une netteté de 0. Si vous le faites, rien ne se passera.
B
: bloquerLorsque vous bloquez, rien ne se passe lorsque votre adversaire pique. Si votre adversaire ne pique pas, bloquer ne fait rien.
Le blocage ne protège pas contre une épée, même si vous en avez aussi une!
Règles et contraintes
Les règles supplémentaires sont:
- Votre programme peut lire et écrire des fichiers dans son propre dossier (pas de vol!) Si vous voulez sauvegarder des données, mais vous ne pouvez accéder à rien en dehors de celui-ci (et les hommes des cavernes n'ont pas de connexion Internet dans le désert).
- Remarque importante sur les fichiers : Si vous enregistrez des fichiers, n'oubliez pas de les enregistrer dans le répertoire
players/YourBotsName/somefile.foo
! Le répertoire de travail actuel de votre programme ne sera pas celui de votre programme!
- Remarque importante sur les fichiers : Si vous enregistrez des fichiers, n'oubliez pas de les enregistrer dans le répertoire
- Les cavernes sont justes: un programme ne peut pas avoir de code spécifique pour un autre programme, et les programmes ne peuvent pas s'aider les uns les autres. (Vous pouvez avoir plusieurs programmes, mais ils ne peuvent en aucun cas interagir.)
- Le juge des cavernes n'est pas patient. Si les hommes des cavernes effectuent plus de 100 tours chacun pour déterminer le vainqueur, le juge s'ennuie et les deux hommes des cavernes perdent.
Si votre programme enfreint une règle ou ne respecte pas la spécification, il est disqualifié, supprimé playerlist.txt
et tous les duels recommencent depuis le début. Si votre programme est disqualifié, le responsable des hommes des cavernes (moi!) Commentera le message de votre programme et expliquera pourquoi. Si vous ne respectez pas les règles, votre programme sera ajouté au classement. (Si votre programme n'est pas dans le classement, il n'y a pas de commentaire explicatif sur votre message, et vous avez posté votre programme avant l'heure "Dernière mise à jour" ci-dessous, dites au chef des hommes des cavernes! Peut-être qu'il l'a oublié.)
Dans votre message, veuillez inclure:
- Un nom.
- Une commande shell pour exécuter votre programme (ex.
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, Etc.).- Remarque: l'entrée sera ajoutée à cela en tant qu'argument de ligne de commande.
- Les hommes des cavernes utilisent Ubuntu 14.04, alors assurez-vous que votre code fonctionne (librement) dessus.
- Un numéro de version, si votre code fonctionne différemment selon les versions de la langue choisie.
- Votre code (évidemment).
- Comment compiler le code, si nécessaire.
Code du contrôleur / test, exemple de bot
Le chef des hommes des cavernes a écrit le code de contrôle en C ++ et l'a posté sur un dépôt Github . Vous pouvez y exécuter et tester votre programme.
Un programme très, très simple (1 ligne!) Est également affiché dans les réponses ci-dessous .
Score et classement
La notation est facile. Celui qui gagne gagne un point. L'homme des cavernes avec le plus de points après 3 duels contre un autre homme des cavernes devient le nouveau leader des hommes des cavernes!
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
(ce classement a été généré automatiquement)
Les joueurs marqués d'un ont *
lancé une erreur ou une exception à un moment donné; ces joueurs ont également un commentaire sur leurs messages.
Les joueurs qui ne pouvaient pas être inclus dans les essais pour une raison quelconque (ces joueurs auront un commentaire sur leurs messages expliquant le problème): Monkey
, Elephant
, FacileFibonacci
, StudiousSylwester
.
Dernière mise à jour: 3 août à 00h15 (UTC).
la source
Réponses:
Darwin - C
Qui a besoin de stratégie, de toute façon? Demandez à un groupe de cavernes de se battre et laissez la sélection naturelle faire le reste!
Nous utilisons un modèle très simple pour le cerveau primitif de l'homme des cavernes: il n'a pas de mémoire et ne prend en compte que la finesse de son bâton et celui de son adversaire. Celles-ci sont utilisées comme variables pour un polynôme binaire d'un ordre fini. Chaque action (bloquer, accentuer et piquer) est associée à un polynôme dont le résultat détermine la probabilité relative de choisir cette action. C’est à peu près tout ce qu’il ya à faire - commencez par quelques coefficients aléatoires et optimisez-le de manière itérative.
Le bot:
Compiler avec:
gcc darwin.c -odarwin -w -O3
. Exécuter avec:./darwin <history>
.Le bot lit les coefficients dans un fichier nommé
program
dans leplayers/Darwin
répertoire (un autre fichier peut être spécifié en tant que second argument de ligne de commande). Ce programme semble bien réussir:Enregistrer sous
players/Darwin/program
.Voici un programme qui génère des
program
fichiers pouvant être utilisés par le bot (il n’est pas nécessaire de les compiler si vous utilisez leprogram
fichier ci-dessus):Compiler avec:
gcc genprog.c -ogenprog -w -O3
. Exécuter avec:./genprog [output-filename]
.Watson
Quel est l'ADN d'un homme des cavernes gagnant? Peut-être que ce gars a la réponse:
Courir avec:
python Watson.py
Watson est le produit d'un algorithme génétique. Contrairement à Darwin, la donnée génétique est cette fois un programme réel, écrit dans un minuscule langage spécifique à un domaine (traduit ici en Python).
La séquence simple bat les gros joueurs
Ce petit gars est étonnamment bien (ou peut-être pas si étonnant), surtout contre les leaders:
Courir avec:
python SSBBP.py
la source
players/Darwin
répertoire.undefined reference to `fmax'
. --Edit-- Peu importe, j'en ai bien besoin-lm
.Caveman imprévisible
Cet homme des cavernes choisit chaque tour au hasard, mais je lui ai expliqué très simplement que certaines actions n’ont tout simplement pas de sens parfois. N'hésitez pas à copier ce code si vous souhaitez exprimer une logique différente.
C'est Ruby, enregistrez sous le nom 'impredictable.rb' et exécutez-le avec
ruby unpredictable.rb
la source
no 'Block'
devrait également l'être si mon adversaire a une épée.unless
pour les déclarationsno 'Block'
etno 'Poke
'? (no 'Block' unless he.has_pointy_stick
)Cave Doctor - Lua
"Moi, je perds face aux nouveaux étrangers, je les ai assommés pour les étudier"
Quand vous avez vu autant de patients que le médecin des cavernes, vous commencez à comprendre véritablement le psychisme de l'homme des cavernes (ou du moins, j'espère). Le jeu Cave Doctor est une stratégie pure, il attend les coups qu'il bloque pour tenter de désarmer son adversaire, mais il ne laissera pas cet adversaire s'approcher de la fabrication d'une épée. Il essaie de prédire quand il est prudent d'aiguiser pour ne pas perdre le dessus.
Courir avec:
lua CaveDoctor.lua
la source
ForeignCaveman
ForeignCaveman n'a aucune idée de ce que vous venez de dire. Il fait juste ... des trucs.
javac ForeignCaveman.java
ensuitejava ForeignCaveman
la source
Vice-chef
Poignée de porte ♦ est leader. Moi veux être leader! Suivez le programme super intelligent pour devenir leader!
Compiler:
javac ViceLeader.java
Exécuter:java ViceLeader
.la source
if (enemySharpness <= 4 || mySharpness >= 5)
vs==
?Peut-être Markov 2.1
Je pense qu’il utilise les chaînes de Markov pour prédire ce que fera l’autre homme des cavernes, mais j’ai seulement regardé brièvement la page wikipedia sur les chaînes de Markov et décidé qu’il y avait trop de texte.
Il essaie de rester en vie pendant 30 rounds, puis crée une table avec les prochains changements d'état et réagit à ce que pense l'autre homme des cavernes.
Le code contient beaucoup d'instructions inutiles, mais il fonctionne assez bien.
MODIFIER
Détecté une faille dans la logique. Maintenant, il fait quelque chose quand il a une épée.
$ python3 players/MaybeMarkov/MaybeMarkov.py
la source
PériodiqueCicadaCaveman
Cet homme des cavernes assez intelligent a étudié un certain Bug et s'est rendu compte que personne ne peut adapter son style de vie pour tirer parti du nombre premier Cicada.
Il cache / bloque pendant la plus grande partie de sa vie, mais pique parfois. Bien sûr, il est vulnérable aux épées, et passe tout un cycle avec un bâton non affûté, mais affûter votre bâton quand il est totalement émoussé? C'est exactement ce que les autres attendent de lui ... pas cette cigale
compiler: mcs program.cs pour exécuter mono program.exe
Edit: Changé la netteté - code ... si je poke soit je gagne ou mon bâton devient plus terne
Edit2: Ajouté dans la suggestion de Bobs
Edit: Modifié pour ne toucher que lorsque Netteté 2, si le bâton est à zéro, l’autre type peut fabriquer une épée.
la source
mcs program.cs
le compilera,mono program
l'exécutera, mais vous devrez remplacer lefoo.Dump();
s parSystem.Console.WriteLine(foo);
(ou ajouter une méthode d'extensionpublic static void Dump(this string value) { System.Console.WriteLine(value); }
).mcs
généré est<filename>.exe
, par exempleprogram.cs
, deviendraitprogram.exe
. Donc, la commande run seraitmono program.exe
. (Je n'avais pas accès au mono lors de mon précédent commentaire.)FancyTechnoAlgorithm
Un algorithme de techno de fantaisie pour le programme informatique de techno de fantaisie.
Caveman continue à perdre la bataille. Caveman en colère. Alors homme des cavernes aller à l'école d'informatique apprendre faire algorithme.
Programme Python 2. Courir:
python fancytechnoalgorithm.py
la source
python StickSharpener.py
).L'observateur
Il surveille les mouvements de ses adversaires, les laissant toujours montrer leur main avant qu'il ne frappe. Il est particulièrement préparé pour ceux qui négligent de travailler vers une épée.
Nom de fichier:
watcher.py
Courir:
python watcher.py
Basilic
Cherche à détruire ceux qui le regardent de trop près. Fait constamment mieux que l'Observateur, mais son bilan sera généralement pire.
Nom de fichier:
basilisk.py
Courir:
python basilisk.py
Nash
Cherche à rendre les choix de son adversaire sans importance, en choisissant chaque coup avec une probabilité que les risques et les avantages en découlent
Ce n'est pas tout à fait l'équilibre de Nash (mon générateur de stratégie a une certaine instabilité), mais c'est proche.
Par curiosité, voici les estimations de la probabilité de victoire de ce bot dans chaque état de jeu:
Nom de fichier:
nash.py
Courir:
python nash.py
Feinte
Ouvre avec une attaque rapide, pour tester les défenses de son adversaire.
Nom de fichier:
feint.py
Courir:
python feint.py
LatePokeBot
Le petit frère de PokeBot. Ne montre jamais de faiblesse, mais essaie de se battre comme son grand frère.
Nom de fichier:
latepokebot.py
Courir:
python latepokebot.py
la source
:
au basilic; J'ai réglé ça pour vousPokeBot
Écrit en rubis.
Courez avec
ruby pokebot.rb
.Ce bot n'est pas très intelligent. il parle de ce que l'homme des cavernes moyen ferait tout seul de toute façon.
la source
PatientWolf v2.0
Accentue si émoussé, pique si l'ennemi aura une épée au prochain tour ou si l'ennemi est émoussé, bloque autrement.
Courir avec
EDIT: merci à @sylwester pour avoir signalé un bug
la source
PatientWolf.pl SB,SP
fait unP
depuis qu'il pense qu'il a un bâton pointu.perl patientwolf.pl "SB,SP"
. Tu devrais fairemy($me,$him) = split/,/ $ARGV[0];
etif( @ARGV ) {print "S";exit}
.Cavalier binaire
Aiguiser, Stab, Répéter
Basé sur l'idée que le blocage est pour les poules mouillées, cet homme des cavernes alterne entre les deux options restantes.
Compiler avec
javac BinaryCaveman.java
Courir avec
java BinaryCaveman
EDIT: Adventures in String Arrays ..... args.length () renvoie une erreur. args.length renvoie toujours 1. args [0] .length () renvoie les longueurs de la première chaîne du tableau.
EDIT 2: Mise à jour grâce à l'aide de Doorknob, Brilliand et Sylwester. Merci les gars.
la source
P
ouS
et fait le contraire. Et s'il n'y a pas encore d'histoire, il prétend que l'histoire le seraitP,
(ce qui le conduit ensuite à le faire enS
premier).args[0].length()
, pasargs.length
.CavekidBlocks
Un enfant des cavernes pleurant et apeuré peut ressembler à une proie facile. Ne laissez pas son joli visage vous tromper parce qu'il sait bloquer.
Courir avec
python3 cavekidblocks.py
ChargerMan
Cet homme des cavernes est très conservateur. Essayera de charger son arme et attaque uniquement en cas de besoin.
Courir avec
python3 chargerman.py
Filou
Trickster ne sait pas se battre, alors il essaie de semer la confusion chez un autre homme des cavernes.
Courir avec
python3 trickster.py
Malheureusement, après le commit acc74 , Trickster ne fonctionne plus comme prévu.
la source
Hodor
Hodor n'est pas très agressif. Il aime rester dans son bouclier à moins d'une bonne occasion de faire la grève.
compiler avec:
javac Hodor.java
et courir avec:java Hodor
code:
Edit: mise à jour du code mineur
la source
SB,BB
. Hodor se comporte aussi mal quand les autres hommes des cavernes se comportent mal au premier tour.Sylwester spéculatif - Perl5
Sylwester spéculatif veut éliminer les chercheurs d’épées en regardant les schémas et piquer quand il ya une chance que l’adversaire aiguise et aiguise quand l’opposant est le plus susceptible de bloquer. Cependant, il ne le fera pas s’il aurait pu deviner que lui-même sera aigu au prochain coup et que nous sommes encore plus prudents lorsque nous décidons d’aiguiser.
Quand son adversaire est émoussé, il essaie d’être agressif, mais finira par économiser pour une épée quand cela semble stérile.
Pour fonctionner sur linux, ajoutez simplement ceci dans playerlist.txt:
Facile Fibonacci - Schéma R6RS
En plus du premier coup, Facile Fibonacci bloque lorsque le tour est un nombre de Fibonacci (à partir de 0) et remplit le reste avec
PPSS..
et change lorsque 8 passe à une séquence infinie dePSS
victoire avec une épée.Pour exécuter, installez simplement ikarus avec
apt-get install ikarus
et ajoutez ceci dans playerlist.txt:Sylwester studieux - Perl5
Studious Sylwester utilise la même tactique que Sylwester spéculatif, mais il examine également les jeux précédents pour déterminer où il aurait pu faire un mauvais choix.
Pour fonctionner sur linux, ajoutez simplement ceci à playerlist.txt
Édition studieuse
Je ne peux pas reproduire les problèmes que vous avez rencontrés avec le fait que vous n'êtes
$0
pas le chemin complet du script Perl lorsqu'il est exécuté avec perl. J'ai également retiré vos modifications et je ne vois aucun changement dans la src de CavemanDuels et c'est la même chose que j'ai exécutée plus de 20 fois sans le problème que vous signalez. Je commence à craindre que vous ayez pu trouver le script en tant que script bash au lieu de l'exécuter en tant qu'exécutable ou en tant qu'argument pour Perl. J'ai besoin de plus d'informations pour savoir à coup sûr. En guise de test, j'ai fait ceci et vous pouvez faire la même chose pour voir si vous obtenez le même résultat:la source
$0
estbash
appelé à partir d'une ligne de commande bash (comme le fait le contrôleur). Vous pouvez simplement coderplayers/StudiousSylwester/foo.txt
, cependant.ikarus
et j'ai ajouté mes réflexions sur$0
Studious.Swordsmith
Besoin d'un bâton pointu. Si vous avez un bâton pointu, piquez. Moi pas de douleur.
Enregistrer sous
swordsmith.f90
et compiler avecgfortran -o swordsmith swordsmith.f90
, exécuter comme tout exécutable normal:./swordsmith
.la source
PatientBlacksmith
Ce bot est écrit en R, utilisez-le
Rscript PatientBlacksmith.R
pour le déclencher.Mesure la netteté du bâton de l’adversaire: bloque quand il est tranchant, prend le temps d’affûter autrement. Lorsque la netteté atteint 5, piquez jusqu'à ce que la netteté disparaisse.
la source
Règles de la prison, Haskell
Cavewoman pense que l'homme des cavernes et les autres hommes des cavernes devraient parler, partager leur bâton. Mais, hé ho, si doit se battre, combattez les règles de la prison. Trouver le patron et attaquer.
Vice-chef Alpha Caveman maintenant; que l'homme des cavernes doit combattre. D'autres hommes se battent plus tard. Si mon homme des cavernes perd, ne vous inquiétez pas; il trop poilu de toute façon.
Écrit en Haskell (programme fonctionnel!), Enregistrez-le sous prisonrules.hs , puis compilez-le avec:
Et courez comme:
la source
Je l'appelle JavaMan
note: je n'ai pas l'intention de jouer au golf de code .. mais si vous êtes un golfeur et que les espaces / lignes supplémentaires font saigner vos yeux .. n'hésitez pas à le changer
la source
Pensées profondes, C
Code de l'homme des cavernes. Caveman pense. Homme des cavernes faire.
Je fais des tests. Plus de pensées mieux.
la source
Nigel
Nigel est un vieil homme des cavernes patient et défensif qui préfère être tactique que d'attaquer.
C'est un script PHP, appel avec
php nigel.php
la source
Aichmophobic - Lua
Il vous frappera de temps en temps, mais seulement jusqu'à ce que le bâton devienne trop tranchant. Lorsque cela se produit, il panique et se courbe en position fœtale.
Exécutez-le avec:
lua aichmophobic.lua
la source
Bob Caves
Bob Caves est l'un des gars les plus intelligents de sa grotte. Il a appris à compter avec une main (l'autre est occupée à tenir son bâton). Il a connu les Jeux olympiques de l'âge de pierre et a voulu y participer.
Sa stratégie principale est de bloquer et d'aiguiser son bâton jusqu'à ce qu'il ait un beau bâton pointu ou que l'autre homme des cavernes en ait un aussi. Dans ce cas, Bob Caves tente de le toucher!
Compiler avec
javac BobCaves.java
et courir avecjava BobCaves
Edit: Bob compte maintenant quand il y a un bloc! (merci à Mikey Mouse ). En outre, il tranchant son bâton lorsque l'autre bâton d'homme des cavernes est émoussé.
Edit 2: Méthode de comptage améliorée (merci encore à Mikey).
Edit 3: Rendre Bob légèrement plus agressif.
la source
Gruntt
Gruntt est défensif. Gruntt analyse d'autres mouvements d'hommes des cavernes pour savoir comment les piquer. Puis il les pique droit dans les yeux. Gruntt n'est pas un gentil homme des cavernes.
Compiler avec
javac Gruntt.java
et courir avecjava Gruntt
la source
ArrayOutOfBoundsException
au premier tour et génère parfois plusieurs actions lors des autres tours.Est-ce un oiseau? Est-ce un avion? C'est RegExMan!
Il essaie d'analyser vos séquences super-ennuyeuses avec son RegEx-power primitif spécial!
Écrit en Python 2.7, exécuté avec
python RegExMan.py [history]
la source
Sicillien
Mais c'est si simple! Tout ce que je dois faire est de deviner ce que je sais d’autre homme des cavernes: est-il le genre d’homme des cavernes qui bloquerait, affûterait ou piquerait? Maintenant, un homme des cavernes habile pourrait frapper ou bloquer, car il saurait que seul un grand imbécile aiguiserait et s'exposerait à l'attaque. Je ne suis pas un grand imbécile, je ne peux donc clairement pas affûter. Mais les autres hommes des cavernes doivent savoir que je ne suis pas un grand imbécile et que j’aurais compté sur cela, afin que je ne puisse clairement pas cingler ou bloquer!
Courir avec:
Code:
la source
bash-magnon
Les Bash-Magnons étaient robustes et puissants. Le corps était généralement lourd et solide avec une forte musculature. Le front était plutôt droit que incliné, comme chez le Néandertal, et ne présentait que de légers passages. Le visage était court et large. Le menton était proéminent. La capacité cérébrale était d’environ 1 600 centimètres cubes (98 pouces cubes), plus grande que la moyenne de l’homme moderne. Cependant, des recherches récentes suggèrent que les dimensions physiques de ce que l'on appelle "Bash-Magnon" ne sont pas suffisamment différentes de celles des humains modernes pour justifier une désignation distincte.
Moi j'ai un cerveau, je m'en souviens.
Ceci est un auto-exécutable
./bash-magnon.sh
la source
PokeBackBot
Simplement adapté de PokeBot:
Courir avec
ruby pokebackbot.rb
.Ceci utilise la stratégie la plus simple suivante et bloque "patiemment" pendant un round avant d'attaquer.
la source
SPS
(ce qui semble raisonnable), mais jusqu'à présent, PokeBot était le seul autour.Maître des Epées
Écrit en Python 3.4 (fonctionne avec Python 3.x)
Essaie d'obtenir une épée aussi vite que possible, mais attaque si elle a une chance de la toucher (netteté> 0) et si l'ennemi peut la blesser aussi (netteté de l'ennemi> 0).
Bloque que si n'a pas de netteté et ennemi pourrait attaquer.
Commencer avec:
(supposé que vous enregistrez sous
swordmaster.py
)Code rapide et moche:
(Définir
dg
surTrue
pour activer les messages de débogage)la source
S
,P
,S
,P
...FoolMeOnce.py
Enregistrez les mouvements de chaque joueur pour le premier duel, puis rejouez avec exactement les mêmes mouvements. Si l'algorithme de l'ennemi est non aléatoire, nous ne pouvons prédire le même résultat et frapper que lorsque nous savons que nous allons gagner.
Écrit en python 3, vous devrez donc probablement utiliser python3. FoolMeOnce.py Au premier tour, je ne suis pas sûr que nous obtenions une chaîne vide ou juste une virgule. Il est donc possible que quelques ajustements soient nécessaires.
la source