Le premier tour de carte magique que j'ai jamais appris étant enfant était le suivant:
- Avoir 1 jeu de cartes où le motif au dos n'est pas symétrique verticalement.
- Organisez toutes les cartes dans une seule direction.
- Demandez à un individu de "choisir une carte, n'importe quelle carte, de la mémoriser et de vous la rendre".
- Passez-le dans le deck (dans la mauvaise direction).
- Mélangez vigoureusement, donnant l'illusion que vous ne saurez pas où se trouve leur carte.
- Produisez leur carte à leur grand étonnement.
Cette astuce est de toute évidence un peu terne dans la nature de nos jours, mais elle constitue un bon défi. Écrivez un programme qui, sans aucune entrée, génère un jeu de cartes mélangé au hasard avec l'une des cartes, choisie au hasard, inversée. Cependant, lorsque l'entrée est un jeu de cartes avec une carte inversée, vous devez sortir la carte inversée (dans le bon ordre).
Le jeu de cartes
Un jeu de cartes est défini comme:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
Une carte est définie comme son numéro, puis la première lettre de sa couleur. Le revers d'une carte est exactement le contraire, la première lettre de sa couleur suivie d'un chiffre.
La carte dessinée
Par exemple, si la carte que nous avons choisie au hasard pour inverser était la 4 of Clubs (4C)
, nous nous retrouverions avec (sans mélange, évidemment):
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,C4,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
The Shuffling
Ensuite, après avoir mélangé:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
Il s'agit d'une sortie valide avec une entrée vide.
L'entrée Deck
Cependant, inversement, lorsque notre programme reçoit la sortie ci-dessus en entrée, il devrait sortir 4C
. Soit pour une entrée de:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
Vous parcourez jusqu'à ce que vous trouviez la carte inversée, et la retournez, retournée à l'état normal. Donc, ici, nous trouverions C4
, saurions que C n'est pas un nombre, et le renverrions comme 4C
, ce qui est correct.
Règles
- Vous ne pouvez pas charger la platine à partir de sources externes.
- Une entrée vide devrait se traduire par un jeu aléatoire au hasard avec 1 carte aléatoire inversée.
- Un jeu de cartes avec 1 carte inversée en entrée devrait donner la carte inversée.
- Toute autre entrée peut entraîner des lamas explosifs sur les segways à travers un tube futuriste.
- Ou toute autre chose, d'ailleurs.
- La carte choisie et l'ordre de mélange doivent être uniformément aléatoires.
- IE, toutes les cartes ont la même chance d'être sélectionnées pour être inversées.
- IE toutes les combinaisons de cartes ont une chance égale d'apparaître.
- Vous pouvez utiliser
SHCD
oushcd
pour les combinaisons, mais soyez cohérent:- Si vous choisissez des combinaisons majuscules (
SHCD
), vous devez également utiliserTJQKA
. - Si vous choisissez des combinaisons minuscules (
shcd
), vous devez également les utilisertjqka
.
- Si vous choisissez des combinaisons majuscules (
- C'est le code-golf , le gagnant est le nombre d'octets le plus bas.
la source
Réponses:
Rétine ,
616059 octetsEssayez-le en ligne! Edit: enregistré
12 octets grâce à @MartinEnder. Explication:Supprimez toutes les cartes non inversées. Cela devrait laisser une carte inversée ou aucune carte.
Si l'entrée est (maintenant) vide, créez un paquet de cartes.
Sélectionnez une carte au hasard et inversez-la (annule la seule carte inversée).
Mélangez la ou les cartes.
la source
05AB1E , 29 octets
Essayez-le en ligne!
la source
1
eta
là-dedans.Y9ŸJ
comme9LJ
PowerShell v2 ou version ultérieure, 175 octets
Version longue:
Usage:
Créez un jeu mélangé et stockez-le dans une variable:
Inspectez la variable à volonté, par exemple
Redirigez le jeu dans le script:
la source
Python 2 , 175 octets
Essayez-le en ligne! l'entrée vide est désignée par
[]
la source
> <> ,
215193 octetsEssayez-le en ligne!
Prend l'entrée comme des cartes non séparées et la sortie comme la même (par exemple
KCAC5C6S...
)Pour faciliter le test, voici une version qui prend les entrées séparées par des virgules et les sorties séparées par des sauts de ligne.
Tous les
x0
s ne sont qu'une tentative pour créer un générateur de nombres aléatoires semi-uniforme. Plus elles augmentent la plage de valeurs possibles, et l'inverse pour moins. 10 d'entre eux ont été jugés assez aléatoires.Notez qu'il suit les règles en ce sens:
Mais toutes les combinaisons mélangées ne sont pas des sorties possibles (et en fait, la grande majorité ne le sont pas).
la source
Gelée , 26 octets
Un lien monadique acceptant une liste de listes de personnages (un talon de 0 cartes ou un jeu complet de 52 cartes avec une carte inversée) et renvoyant une liste de listes de personnages (un talon de la 1 carte inversée mais en avant ou une pleine -deck avec une carte aléatoire inversée).
Essayez-le en ligne! (pied de page pour faire correspondre les représentations d'entrée et de sortie - en tant que programme complet, le code Jelly Python-évalue l'argument et écrase les caractères ensemble pour la sortie)
Comment?
la source
Ẋ
avant leU
(peut-être que je peux le réparer pour zéro octet à la place) mais devra le faire plus tard ...[[number, suit]]
au lieu de[number, suit]
représenter une seule carte lorsque l'entrée n'est pas vide.Ruby , 95 (ou 100) octets
Étant donné un tableau vide en entrée, renvoie le jeu sous forme de tableau de chaînes. Étant donné un tableau non vide en entrée, renvoie la carte retournée sous la forme d'un tableau contenant une seule chaîne. Si la carte retournée est requise sous la forme d'une chaîne plutôt que d'un tableau à un seul élément contenant une chaîne, ce qui suit ajoute 5 octets: passez
s-n
à(s-n)[0]
Essayez-le en ligne!
La première ligne génère un jeu standard. La deuxième ligne se décompose comme suit
la source
Java 8,
275274259 octetsL'entrée est une chaîne, la sortie est soit une chaîne, soit une
java.util.List
fonction de l'entrée.Explication:
Essayez-le en ligne.
la source
Pyth, 45 octets
Prend la liste vide pour une entrée vide.
Essayez-le en ligne
Explication
la source
R ,
177171 octetsEssayez-le en ligne!
Étant donné une entrée vide (appel
f
sans entrée), nous utilisons par défautl=1
et créons ainsi une permutation aléatoirem
du jeu. En supposant quesample
c'est vraiment aléatoire, il y a une probabilité égale qu'une carte soit la première de cette liste. Nous modifions donc le premier, puis mélangons à nouveau, renvoyant la liste.En l'inversant, nous recherchons une carte commençant par l'une
SDHC
et l'inversons.la source
Python 2 , 135 octets
Essayez-le en ligne!
Les cartes sont des tuples de
(value,suit)
L'entrée vide est
[]
la source