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).