(inspiré par une question sur Code Review)
Supposons que deux personnes jouent au pendu , mais vous n'avez entendu que le jeu et souhaitez dessiner l'état actuel.
Étant donné deux mots en entrée, où les mots correspondent chacun [A-Z]+
ou [a-z]+
(votre choix), sortez l'état actuel du jeu du pendu en tant qu'art ASCII, en suivant les règles ci-dessous.
- Le premier mot est le mot à deviner, et le second mot est les lettres déjà devinées. Ceux-ci peuvent être pris en entrée dans n'importe quel ordre.
- Le mot à deviner est garanti non vide, mais les lettres déjà devinées peuvent être vides (c'est-à-dire comme si c'était le début du jeu).
- Le jeu sera toujours un jeu de bourreau valide (c'est-à-dire que les lettres devinées ne seront pas dupliquées, les lettres ne seront pas devinées après la fin du jeu, vous ne recevrez que des lettres en entrée, etc.).
- Au-dessous du dessin du bourreau doit être le mot à deviner, avec
_
à la place des lettres encore inconnues, séparées par des espaces. Par exemple, si le mot à deviner étaitBOAT
, alors en dessous du dessin du bourreau doit être_ _ _ _
. Si le mot a étéBOAT
avecA
deviné, puis sous le dessin doit être_ _ A _
. - En dessous du mot à deviner, il doit y avoir des lettres déjà devinées qui ne sont pas dans le mot. Ceux-ci peuvent être dans n'importe quel ordre et peuvent être séparés par n'importe quel séparateur non alphabétique, si vous le souhaitez.
Voici les états du jeu du pendu, du début à la fin du jeu. Chaque lettre faussement devinée fait avancer l'État d'un point. Ainsi, la première lettre erronée fait O
apparaître la tête , la suivante fait |
apparaître le corps , etc.
+---+
| |
|
|
|
|
=========
+---+
| |
O |
|
|
|
=========
+---+
| |
O |
| |
|
|
=========
+---+
| |
O |
/| |
|
|
=========
+---+
| |
O |
/|\ |
|
|
=========
+---+
| |
O |
/|\ |
/ |
|
=========
+---+
| |
O |
/|\ |
/ \ |
|
=========
Contribution
- Deux chaînes dans n'importe quel format pratique , avec la première garantie non vide.
- Vous pouvez prendre l'entrée dans l'un ou l'autre ordre (par exemple, mot à deviner puis lettres devinées, ou vice versa). Veuillez indiquer dans votre soumission l'ordre d'entrée.
Sortie
La représentation artistique ASCII résultante du jeu du pendu en cours, comme décrit ci-dessus, à nouveau dans n'importe quel format pratique.
Règles
- Les sauts de ligne ou les espaces de début ou de fin sont tous facultatifs, tant que les caractères eux-mêmes s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Exemples
#1
BOAT
et ATG
+---+
| |
O |
|
|
|
=========
_ _ A T
G
# 2
ZEPPELIN
et
+---+
| |
|
|
|
|
=========
_ _ _ _ _ _ _ _
# 3
ZEPPELIN
et EATOLINSHR
+---+
| |
O |
/|\ |
/ \ |
|
=========
_ E _ _ E L I N
A T O S H R
# 4
RHYTHM
et ABCDE
+---+
| |
O |
/|\ |
/ |
|
=========
_ _ _ _ _ _
EDCBA
# 5
BOAT
et ATOB
+---+
| |
|
|
|
|
=========
B O A T
# 6
AIRPLANE
et AJKEI
+---+
| |
O |
| |
|
|
=========
A I _ _ _ A _ E
KJ
Réponses:
Python 2 ,
215192184 184183 octets-8 octets grâce à Raphaël Côté
-1 octet grâce à Jonathan Frech
Essayez-le en ligne!
la source
|
) au lieu du bras gauche (/
) quand il y a 2 lettres erronées: Essayez-le en ligne"\\/"
est égal à"\/"
.Fusain ,
836968 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Modifier: enregistré 14 octets en basculant sur
switch
. Enregistré 1 octet en imprimant le single|
comme un littéral. Note: Au moment où la question a été réglée,switch
n'a pas fonctionné du tout en mode verbeux et avait besoin d' un arrière«
en mode Succinct (la version actuelle sur TIO n'a ni bug, il montre la traduction succincts 67 octets), alors queMap
l » des bugs m'ont empêché d'utiliserPrint(Join(Map(q, Ternary(Count(h, i), i, "_")), " "));
. Heureusement, j'ai réussi à trouver un kludge pour la même longueur (et en effet, j'ai également essayé de passer l'autre boucle à une carte, mais elle est également sortie à la même longueur). Explication:la source
Python 2 , 220 octets
Essayez-le en ligne!
-35 octets grâce à Raphaël Côté
-20 octets en utilisant des sets
-1 octet grâce à micsthepick
la source
translate
mais cela s'est avéré être plus long lol.for i in range(7):s=s.replace(`i`,'O|/\\/\\'[i] if i<c else ' ')
. Cela vous donne une seule boucle et vous changez simplement le remplacement si vous êtes plus c. Vous pouvez réduire à 251 octets de cette façon :)Gelée ,
7273 octets+1 corrigeant un bug du jeu d'as qui montrait la personne pendue (changé
LN
enLạ6
presque à la fin)Un lien dyadique prenant le mot à gauche et les lettres (uniques et intra-jeu) à droite et renvoyant une liste de caractères, ou un programme complet prenant l'entrée comme arguments de ligne de commande et imprimant le résultat.
Essayez-le en ligne!
Comment?
D'abord:
La valeur numérique de la personne pleine Pendu dans la base 9, où chacun des 9 chiffres représentent l' un des personnages:
<space>
,<newline>
,-
,|
,O
,/
,\
,=
ou+
.le reste du programme:
la source
BOAT
etATOB
. Essayez-le en ligne!Japt v2 ,
94918381 octets-3 octets de quelques idées de l'approche @ETHproductions à ce sujet .
-8 octets en utilisant la rotation de chaîne multiligne.
-2 octets en utilisant v2.
Prend les deux entrées de mots comme des tableaux de caractères, le mot devinant en premier et les lettres devinées en second. Les lettres incorrectes sont affichées séparées par le par
,
. Lorsqu'il n'y a pas de lettres incorrectes, la dernière ligne est vide (ce qui signifie que la sortie contient une nouvelle ligne de fin supplémentaire).Essayez-le en ligne!
Explication
Implicite:
U
etV
sont des tableaux de caractères d'entrée.Démarrez un tableau et appuyez sur la chaîne de format homme suspendu, tournée de 90 ° vers la gauche.
Remplacez (
r
) chaque chiffre (\d
) par la fonction suivante:Si le chiffre est
>=
(¨
) le nombre de suppositions erronées (VkU l
), un espace (S
), sinon, obtenez la partie du corps appropriée pour ce chiffre ("..."gZ
).Faites pivoter l'homme suspendu de 90 ° vers la droite et poussez
=
3 * 3 (³³
) fois sur le tableau.Poussez le mot à deviner, avec des lettres mappées (
¡
) à elles-mêmes (X
) si elles sont contenues dansV
(VøX
), ou_
sinon, et jointes avec des espaces (¸
), au tableau.Poussez les lettres devinées, avec les lettres du mot à deviner supprimées (
k
), dans le tableau de sortie. Fermez le tableau et joignez-vous à newlines (·
).Rotation visualisée:
la source
W
puisse fonctionner car les parties du corps n'apparaissent pas de gauche à droite / de haut en bas. J'ai cependant pu enregistrer quelques octets à partir de votre version.05AB1E , 83 octets
Essayez-le en ligne!
Le Bitmap:
05AB1E , 18 octets
Essayez-le en ligne!
Cela pousse le plan bitmap suivant:
Où les octets supplémentaires suivants:
05AB1E , 13 octets
Essayez-le en ligne!
Remplacez les morceaux du bitmap par les caractères appropriés, en laissant les 5 pour remplacer les morceaux du bourreau plus tard:
Le pendu:
Ensuite, nous calculons le nombre de fois où l'utilisateur s'est trompé en saisissant les lettres qui se trouvent dans la deuxième entrée, mais pas dans la première entrée:
05AB1E , 6 octets
Essayez-le en ligne!
Enfin, nous utilisons un bitmap secondaire pour le remplacer dans l'homme pendu, en le séparant par des retours à la ligne et en le préparant pour l'impression finale:
05AB1E , 26 octets
Essayez-le en ligne!
Il en résulte les premières pièces, les seules pièces restantes étant la sortie des deux mots en bas dans un format diff ...
Les mots ci-dessous:
Imprimez le premier mot sans les suppositions manquantes:
05AB1E , 15 octets
Essayez-le en ligne!
05AB1E , 5 octets
Essayez-le en ligne!
Imprimez les suppositions manquées calculées précédemment que nous avons stockées dans un registre.
la source
/
) avant le corps (|
). Deux fausses lettres devraient faire apparaître les morceaux de tête et de corps. Essayez-le en ligneGelée , 86 octets
Essayez-le en ligne!
Ouf ... c'était amusant. Je n'ai jamais utilisé autant de
¤
caractères.Comment ça marche
la source
C #,
305296 octetsSvaed 9 octets grâce à @raznagul.
Essayez-le en ligne!
Version complète / formatée:
Cela fonctionne également pour 314 octets (pourrait probablement être encore plus court):
la source
g.Select(c=>!w.Contains(c)?c+"":"")
parg.Where(c=>!w.Contains(c))
.JavaScript (ES6),
203196187186185184180177 177176 octetsPrend l'entrée comme 2 tableaux de caractères individuels dans la syntaxe de curry.
Essayez dejouerla source
1
,324
,5 6
(voir le dernier cas de test).Scala ,
392389 octetsCela pourrait encore être fortement jouable au golf.
C'est à l'intérieur d'une fonction prenant
s
ett
comme paramètres, avecs
le mot à deviner ett
la chaîne contenant des lettres déjà essayées.MODIFIER:
-1 octet:
t.contains(x) -> t contains x
-1 octet:
s.contains(x) -> s contains x
-1 octet:
.mkString(" ") -> mkString " "
Essayez-le en ligne!
la source
PHP 7, 246 octets
prend l'entrée des arguments de ligne de commande. Courez avec
-nr
ou essayez-le en ligne .la source