Un casino utilise le jeu de cartes suivant. ( *
Est l' une des combinaisons de cartes D
, S
, C
ou H
.)
_________ _________ _________ _________ _________
| | | | | | | | | |
| | | | | * | | * * | | * * |
| | | * | | | | | | |
| * | | | | * | | | | * |
| | | * | | | | | | |
| | | | | * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________ _________ _________
| | | | | | | | | |
| * * | | * * | | * * | | * * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * * | | | | * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * | | * * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________
| | | | | |
| * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * | | * * | | * * * |
|_________| |_________| |_________|
Après chaque nuit, les vieux ponts sont jetés et coupés en deux pour éviter leur réutilisation. En conséquence, le casino a une grande salle pleine de moitiés de cartes coupées.
Malheureusement, l'économie est mauvaise et le casino est en difficulté financière. La chose la plus raisonnable pour économiser de l'argent semble être le recyclage, donc les propriétaires de casino décident de recoller les vieilles cartes. Ils embauchent donc une équipe pour construire une machine qui le fera.
Vous faites partie de l'équipe et votre travail consiste à aider à identifier la carte.
Écrivez un programme ou une fonction qui prendra une image d'art ASCII d'une moitié de carte sous la forme d'une chaîne et renverra une chaîne de quelle carte il s'agit.
L'entrée est une chaîne 11x5, plus des caractères de saut de ligne (CR, LF ou CRLF, vous n'avez besoin que d'en prendre en charge une). Si nécessaire, vous pouvez supposer des espaces de fin à la fin de chaque ligne d'entrée. L'entrée ne contiendra aucun caractère invalide (autre que _|-HSCD
et espace et saut de ligne).
Une moitié de carte ressemblera à ceci:
_________
| |
| H H |
| H H H |
---H---H---
qui devrait être identifiée comme la Reine de Cœur:
H12
Le casino a un budget limité, c'est donc le golf de code: le programme le plus court gagne.
la source
H 12
?Réponses:
CJam,
16151312 octetsTestez-le ici.
Explication
L'idée de base est de manipuler la chaîne de manière à ce que le codage intégré de CJam fonctionne pour nous.
Passons en revue un exemple (celui de la question). La chaîne d'entrée est
Nous le répétons deux fois:
Et supprimez la dernière ligne:
Ensuite, nous trions cette chaîne. Il y aura maintenant un tas de nouvelles lignes au début, puis cela (raccourci de quelques espaces pour éviter une barre de défilement horizontale):
Bien que le caractère du costume varie, ce sera toujours une lettre majuscule, trouvée dans la quatrième manche de la chaîne triée (en tenant compte de la nouvelle ligne). Lorsque nous encodons cela, nous obtenons
Il nous suffit donc de sélectionner le quatrième élément et de l'inverser.
Voici une ventilation du code réel:
la source
Pyth (version récente), 16 octets
Essayez-le en ligne: Pyth Compiler / Executor
Explication:
Pyth 4.0, 13 octets
Pyth avait une construction en encodage de longueur d'exécution. Mais seulement pour peu de temps. Si quelqu'un veut essayer ceci: clonez le dépôt Pyth et extrayez le commit 6a6dccd.
Ce programme fonctionne à peu près de la même manière que la solution CJam de Martin.
la source
CJam, 22 octets
En regardant plus d'options de golf ici. Voici comment cela fonctionne:
Essayez-le en ligne ici
la source
Python 2,
806866 octetsEssayez-le ici
Dupliquez l'entrée, recherchez toutes les lettres sauf la dernière ligne (les premiers caractères de la dernière ligne ne peuvent pas être des lettres), puis imprimez la première lettre et le nombre.
Entrée :
' _________\n| |\n| H H |\n| H H H |\n---H---H---'
Sortie :
H12
Version précédente qui utilise regex (68):
Merci à Sp3000 pour son aide au golf.
la source
i=input()*2;s="CDSH";r=[i[:-9].count(x)for x in s];n=sum(r);print s[r.index(n)]+`n`
APL, 39 octets
Je suis sûr que cela pourrait être beaucoup plus court, mais c'est un début.
Cela crée une fonction monadique nommée qui accepte une chaîne d'entrée et renvoie une chaîne contenant le costume et la valeur de la carte. Vous pouvez l' essayer en ligne !
Explication:
Les suggestions sont les bienvenues comme toujours!
la source
(⊃,≢)'HDCS'∩⍨¯11↓,⍨
?5⌷{⍺,≢⍵}⌸¯11↓,⍨⍞
J, 26 octets
Usage:
Lecture du code de gauche à droite:
4{~.
).+/
) le nombre total de caractères dans l'entrée ([
) et l'entrée sans les 9 derniers caractères (_9}.[
).]
) à la représentation sous forme de chaîne de la somme résultante (":
).la source
Perl, 75 octets
Version non golfée
la source
Julia, 58 octets
Cela crée une fonction sans nom qui prend une chaîne en entrée et retourne la couleur et la valeur de la carte. Pour l'appeler, donnez-lui un nom, par exemple
f=s->(...)
.Non golfé + explication:
Les suggestions sont les bienvenues comme toujours!
la source
Bash + coreutils, 73
la source