Avis: Ce défi du roi de la colline est terminé. Cela signifie que la coche verte, qui a été attribuée à C5H8NNaO4 pour son entrée The Observer ne sera pas déplacé vers une nouvelle réponse.
Vous pouvez toujours soumettre de nouvelles entrées, mais il peut y avoir des retards dans le déroulement des nouveaux tournois car je ne vérifie plus activement les nouvelles entrées.
introduction
Dans ce défi, vous jouez à un jeu d'arcade intitulé The Ultimate Samurai Showdown, édition spéciale Ultimate Edition 2.0 X Alpha Omega Turbo (ou simplement Ultimate Samurai Showdown en abrégé). Vos adversaires? Nul autre que les autres membres de Programming Puzzles & Code Golf!
Comme vous pouvez vous attendre d'un jeu d'arcade PPCG, vous ne jouez pas directement dans Ultimate Samurai Showdown , mais écrivez plutôt un programme qui jouera le jeu pour vous. Ce programme luttera contre les programmes soumis par d’autres utilisateurs lors de duels individuels. Le programme le plus qualifié sera couronné Ultimate Samurai de PPCG et obtiendra le titre de légende vert.
Description du jeu
Cette section décrit les mécanismes derrière le jeu.
Condition de victoire
Un match consiste en deux samouraïs qui se font face. Chaque samouraï commence chaque match avec 20 points de vie et 1 honneur . Un samouraï gagne si son adversaire est mort et qu'il est toujours en vie. Il existe deux méthodes par lesquelles un samouraï peut mourir:
- Si les points de vie d'un samouraï sont ramenés à 0, il mourra.
- Si un samouraï ramène son propre honneur en dessous de 0, il sera frappé par les dieux pour avoir agi de manière déshonorante dans un duel.
Être frappé par les dieux a la priorité sur la réduction du nombre de points de vie à 0. Ainsi, dans une situation où un samouraï est à 0 point de santé et l'autre à -1 honneur, le samouraï avec 0 point de santé l'emportera. Dans une situation où les deux samouraïs sont à -1 honneur, ils sont tous deux frappés par les dieux et le jeu est un match nul.
Un match comprend jusqu'à 500 tours . Si tous les 500 tours sont passés et que le match n’a pas été décidé (aucun samouraï n’est mort), les dieux s’ennuient et abattent les deux samouraïs, ce qui entraîne un match nul.
actes
À chaque tour, le samouraï doit effectuer exactement l'une des actions suivantes:
W
Le samouraï doit attendre et ne rien faire. Cela le rend cool mais ne l'aide pas à vaincre son adversaire. C'est aussi l'action par défaut.
B
Le samouraï doit s'incliner devant son adversaire de manière honorable. Cela plaît aux dieux et ainsi les samouraïs gagneront 1 honneur. L’honneur est essentiel au succès de votre samouraï, car l’honneur est essentiellement la "ressource" de ce jeu - tous les mouvements sont différents B
et W
peuvent diminuer l’honneur. De plus, si un samouraï gagne 7 points d’honneur ou plus, il se voit accorder l’utilisation de l’ Épée des Dieux . Les implications de ceci sont décrites ci-dessous.
Cependant, s'incliner devant votre adversaire vous laisse ouvert si votre adversaire décide de vous frapper avec son épée. Soyez donc prudent lorsque vous choisissez de vous incliner.
G
Le samouraï doit entrer en position défensive et se prémunir contre les coups d’épée. Ce mouvement bloquera avec succès toutes les frappes à l'épée, même celles effectuées avec l' épée des dieux .
Cependant, les dieux froncent les sourcils sur un samouraï trop défensif. Ce mouvement consomme 1 Honneur si l'action du samouraï au tour précédent était également en garde. Il ne consomme pas l'honneur autrement.
I
Le samouraï doit tenter de frapper son adversaire avec un tirage rapide de son épée de son fourreau. Si le samouraï a 7 honneur ou plus, il utilisera l' épée des dieux à la place de son épée habituelle. Ce mouvement consomme 1 Honneur.
Le tirage rapide est une frappe rapide qui battra des attaques plus lentes au-dessus de la tête, mais perdra contre des parades. Si la frappe se connecte avec succès, elle infligera 1 dommage, ou 2 dégâts avec l' épée des dieux .
P
Le samouraï doit tenter de parer toute attaque imminente, puis lance sa propre attaque. Si le samouraï a 7 honneur ou plus, il utilisera l' épée des dieux à la place de son épée habituelle. Ce mouvement consomme 1 Honneur.
La parade est une bonne manœuvre contre les frappes rapides, mais elle sera dominée par des attaques aériennes plus lentes. Si la frappe se connecte avec succès, elle infligera 1 dommage, ou 2 dégâts avec l' épée des dieux .
O
Le samouraï doit tenter de frapper son adversaire avec une attaque aérienne plus lente. Si le samouraï a 7 points d'honneur ou plus, il utilisera l' épée des dieux à la place de son épée habituelle. Ce mouvement consomme 1 honneur.
La frappe aérienne peut maîtriser les parades, mais elle perdra face aux frappes rapides. Si la frappe se connecte avec succès, elle infligera 1 dommage, ou 2 dégâts avec l' épée des dieux .
Épée des dieux
Un samouraï avec honneur de 7 ans ou plus gagne la capacité d'utiliser l' épée des dieux . Si son honneur est réduit à moins de 7, sa capacité à utiliser l' épée des dieux lui sera révoquée. L' épée des dieux inflige 2 dégâts au lieu de 1.
L' épée des dieux ne permet pas à une frappe de vaincre une frappe d'épée qui ne serait normalement pas vaincue. Par exemple, une parade de Sword of the Gods perdra toujours face à une frappe aérienne ordinaire, et un tirage rapide de Sword of the Gods ne l'emportera pas sur un tirage rapide ordinaire. En fait, la soi-disant épée des dieux n’est en réalité pas très puissante - c’est peut-être une blague cosmique jouée par les dieux ...
Table d'interaction
Le fragment de pile ci-dessous contient un tableau qui répertorie explicitement tous les résultats possibles des différentes combinaisons d’actions que les deux samouraïs peuvent effectuer. Pour l'afficher, cliquez sur "Afficher l'extrait de code", puis sur "Exécuter l'extrait de code".
Programme de communication
Pour faciliter le déroulement du tournoi, un programme de contrôleurs a été écrit pour jouer le rôle de "dieux" - il garde des records d’honneur et de santé et frappe les samouraïs en conséquence. Cette section décrit comment votre programme communiquera avec le programme du contrôleur.
Description de l'entrée
Le programme du contrôleur appellera votre programme à partir de la ligne de commande, comme suit:
<command> <history> <enemy_history> <your_health> <enemy_health> <your_honour> <enemy_honour>
où:
<command>
est la commande requise pour exécuter votre programme. Par exemple, si votre programme est dans un fichiersuper_sentai.pl
, la commande est probablementperl super_sentai.pl
.<history>
est une histoire de mouvements que vous avez faits. Par exemple,WWBP
cela signifierait que vous avez attendu deux fois, que vous vous êtes incliné une fois et que vous avez été paré une fois.<enemy_history>
est une histoire de mouvements effectués par votre ennemi. Par exemple,BBBI
cela signifierait que votre ennemi s'est incliné trois fois et a effectué un tirage rapide.<your_health>
est votre santé actuelle.<enemy_health>
est la santé actuelle de l'ennemi.<your_honour>
est votre honneur actuel.<enemy_honour>
est l'honneur actuel de l'ennemi.
Pour le premier tour, le history
et enemy_history
sera vide, votre programme sera donc appelé avec les quatre derniers arguments comme ceci:
<command> <your_health> <enemy_health> <your_honour> <enemy_honour>
S'il vous plaît soyez prêt pour cela!
Les lecteurs avisés remarqueront peut-être que les quatre arguments fournissant l’honneur et la santé des deux samouraïs sont, dans une certaine mesure, superflus; S'agissant d'un jeu d'informations parfait, l'honneur et la santé des samouraïs peuvent être déterminés à l'aide des historiques uniquement.
Ces valeurs sont fournies à des fins pratiques afin que vous n'ayez pas à analyser les arguments de l'historique. Cela devrait s'avérer utile pour mettre en œuvre des stratégies simples, telles que ne pas attaquer lorsque votre honneur est égal à 0.
Description de la sortie
Pour choisir une action, votre programme devrait afficher l' un des W
, B
, G
, I
, P
ou O
à la sortie standard, en fonction de l' action que vous voulez faire. Si votre programme ne génère rien dans un délai de 1000 ms, il sera terminé et votre programme sera traité comme s'il était sorti W
.
Si votre programme génère plus d'une lettre, seule la première lettre sera prise en compte. La sortie Parry
sera donc identique à la sortie P
.
Si le résultat de la première lettre de votre programme ne correspond à aucune des options répertoriées ci-dessus, sa valeur par défaut est W
.
Format de soumission
Soumettez un programme en réponse à cet article. Vous pouvez soumettre plusieurs programmes. Si vous soumettez plusieurs programmes simples, je vous recommande de les soumettre en tant que réponse unique; Si vous soumettez plusieurs programmes complexes, je vous recommande de les soumettre séparément. Une fois que j'ai ajouté avec succès votre / vos programme (s) au tournoi, je ferai un engagement dans le référentiel git avec votre inscription (lien ci-dessous).
Si je rencontre des problèmes qui empêchent l'ajout de votre programme au tournoi, je laisserai un commentaire sur votre inscription pour indiquer le problème.
Veuillez inclure les éléments suivants dans votre soumission:
- Nom lisible par l’homme de votre programme, à utiliser dans les tableaux de bord. Les espaces sont autorisés ici; les virgules et les caractères Unicode ne le sont pas.
- La langue dans laquelle votre programme est écrit. Veuillez éviter d’écrire dans des langues étranges et difficiles d’accès telles que TinyMUSH.
- Un bref synopsis de votre programme. Il peut s’agir d’une description du fonctionnement du programme, ou simplement d’un texte de synthèse sur votre programme (si vous souhaitez rester secret), ou peut-être des deux.
- La commande / s requise pour exécuter votre programme. Par exemple, si vous écrivez votre soumission en Java appelée
example.java
, vous devez fournir des instructions de compilationjavac example.java
puis des instructions d'exécutionjava example
. - Le code source du programme.
Pour aider à la soumission, je fournis un modèle de soumission qui peut être trouvé ici . Le modèle rend les soumissions plus jolies. J'encourage fortement à l'utiliser.
Je fournis également deux exemples d'entrées. Bien que les exemples d’exemples participeront au round robin, leur objectif principal est de clarifier les formats de soumission et d’entrée / sortie du tournoi, plutôt que d’être de sérieux prétendants au titre d’Ultimate Samurai.
Structure du tournoi
Cette section décrit le déroulement du tournoi entre les participants.
Programme de contrôle
Le programme de contrôle est écrit en Python 2 et se trouve dans le référentiel Ultimate Samurai Showdown Github . Si vous souhaitez l'exécuter vous-même, des instructions sur son exécution sont incluses dans le fichier README.md dans le lien. Cependant, seuls les tournois organisés sur mon ordinateur seront officiels pour éviter les différences matérielles affectant les résultats du tournoi.
Le programme de contrôle sera exécuté sur un ordinateur portable sous Arch Linux. Il dispose d'un processeur Intel Core i7 et de 8 Go de RAM. Je vais essayer de faire en sorte que toutes les entrées soient exécutées sur mon ordinateur, mais je vous en serais très reconnaissant si vous évitiez des langues inaccessibles (sans aucun coût monétaire).
Système de notation
Le système de notation est un round robin. Chaque programme jouera huit matches contre tous les autres programmes. Une victoire donne au programme 1 point, une perte sans points et un match nul 0,5 point. Le programme avec le score le plus élevé gagne la partie. S'il y a un match nul, je combinerai les deux meilleurs programmes pour déterminer le vainqueur.
Le nombre de répétitions de chaque programme peut être réduit de 8 si le nombre de participants est extrêmement élevé. Je vais ajouter une note ici si cela se produit.
J'organiserai le tournoi à la ronde à plusieurs reprises au fur et à mesure que de nouvelles soumissions seront publiées, mais seul le plus récent tournoi à la ronde comptera.
Disqualifications
Il est possible que votre programme soit disqualifié du tournoi. L’exclusion peut survenir si:
- Votre programme ne compile ni ne court;
- Votre programme est un duplicata stratégique d’un autre programme (c’est-à-dire qu’il met en œuvre exactement la même stratégie qu’un autre programme);
- Votre programme tente de saboter d'autres programmes en modifiant le code du contrôleur, le code d'un autre programme, etc.
- Votre programme tente d'exploiter un bogue dans le code du contrôleur. Au lieu d’exploiter des bogues, vous devriez plutôt ouvrir un problème dans le référentiel git, faire un commentaire ici ou cingler.
Résultats passés
Les résultats détaillés de tous les tournois sont disponibles sur la page wiki .
Le plus récent tournoi a été clôturé le 2015-07-17 07:20. Voici un résumé des résultats:
The Observer: 209.0
Coward: 203.0
Monk: 173.0
Elephant Warrior: 157.0
Iniqy: 157.0
Agent 38: 144.0
Ninja: 138.0
Meiyo Senshi: 138.0
Kakashi: 136.0
Yoshimitsu: 131.0
Hermurai: 121.0
Warrior Princess: 120.0
Gargoyle: 119.5
The Honourable: 119.0
Hebi: 118.5
Predictor: 116.0
Whack-a-mole: 107.0
The Fool: 106.0
The Prophet: 105.0
Copy-san: 97.0
YAGMCSE: 80.0
The Waiter: 66.0
Swordsman: 43.0
Spork Holder: 32.5
Blessed Samurai: 27.5
Attacker: 27.0
The Terminator: 17.0
Master Yi: 16.0