Explication
Un mélange parfait est où un jeu de cartes est divisé exactement en deux et les cartes de chaque pile sont alternativement entrelacées. Les cartes inférieures d'origine et la carte supérieure d'origine doivent être conservées après un mélange parfait.
Après 8 shuffles parfaits, un jeu de 52 cartes standard revient à son ordre d'origine.
Défi
Écrivez un programme qui affiche l'état d'un jeu de cartes au fur et à mesure qu'il passe par 8 shuffles parfaits consécutifs. Vous pouvez utiliser n'importe quelle représentation lisible par l'homme d'un jeu, à condition qu'elle affiche le numéro et la couleur de chaque carte du jeu dans un ordre séquentiel. Il doit afficher une représentation de toutes les cartes, pour les neuf états.
C'est le golf de code , donc la solution la plus courte l'emporte.
Exemple de sortie
Voici un exemple de sortie produite par cet exemple d'implémentation en Javascript
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
AS,7D,AC,7H,AD,8S,AH,8C,2S,8D,2C,8H,2D,9S,2H,9C,3S,9D,3C,9H,3D,10S,3H,10C,4S,10D,4C,10H,4D,JS,4H,JC,5S,JD,5C,JH,5D,QS,5H,QC,6S,QD,6C,QH,6D,KS,6H,KC,7S,KD,7C,KH
AS,4C,7D,10H,AC,4D,7H,JS,AD,4H,8S,JC,AH,5S,8C,JD,2S,5C,8D,JH,2C,5D,8H,QS,2D,5H,9S,QC,2H,6S,9C,QD,3S,6C,9D,QH,3C,6D,9H,KS,3D,6H,10S,KC,3H,7S,10C,KD,4S,7C,10D,KH
AS,9S,4C,QC,7D,2H,10H,6S,AC,9C,4D,QD,7H,3S,JS,6C,AD,9D,4H,QH,8S,3C,JC,6D,AH,9H,5S,KS,8C,3D,JD,6H,2S,10S,5C,KC,8D,3H,JH,7S,2C,10C,5D,KD,8H,4S,QS,7C,2D,10D,5H,KH
AS,5S,9S,KS,4C,8C,QC,3D,7D,JD,2H,6H,10H,2S,6S,10S,AC,5C,9C,KC,4D,8D,QD,3H,7H,JH,3S,7S,JS,2C,6C,10C,AD,5D,9D,KD,4H,8H,QH,4S,8S,QS,3C,7C,JC,2D,6D,10D,AH,5H,9H,KH
AS,3S,5S,7S,9S,JS,KS,2C,4C,6C,8C,10C,QC,AD,3D,5D,7D,9D,JD,KD,2H,4H,6H,8H,10H,QH,2S,4S,6S,8S,10S,QS,AC,3C,5C,7C,9C,JC,KC,2D,4D,6D,8D,10D,QD,AH,3H,5H,7H,9H,JH,KH
AS,2S,3S,4S,5S,6S,7S,8S,9S,10S,JS,QS,KS,AC,2C,3C,4C,5C,6C,7C,8C,9C,10C,JC,QC,KC,AD,2D,3D,4D,5D,6D,7D,8D,9D,10D,JD,QD,KD,AH,2H,3H,4H,5H,6H,7H,8H,9H,10H,JH,QH,KH
AS,AD,2S,2D,3S,3D,4S,4D,5S,5D,6S,6D,7S,7D,8S,8D,9S,9D,10S,10D,JS,JD,QS,QD,KS,KD,AC,AH,2C,2H,3C,3H,4C,4H,5C,5H,6C,6H,7C,7H,8C,8H,9C,9H,10C,10H,JC,JH,QC,QH,KC,KH
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
la source
Réponses:
J,
66655452504743 caractèresProduction:
Je suis contraint de plus en plus dans les tutoriels et les manuels de référence de J pour rester en tête ici. : -S
la source
AS
et la dernière est tout le tempsKH
.Haskell, 103
Production:
Je ne sais pas s'il y a des problèmes UTF-8 ici, ne devrait pas ... c'est un vidage hexadécimal du programme
et de la première ligne de sortie
(les cartes à jouer Unicode )
la source
Python 2, 79 caractères
La sortie est un peu moche mais je crois que ça devrait compter.
la source
product
!Python2, 104
Ceci est similaire à la solution d'Ev_Genus. Je mets le costume avant le rang car cela me permet de sauver un personnage.
Production
la source
[r,'10'][r>"Q"]
est astucieux. Je ne pense pas que vous ayez besoin de backticks autour du10
. Les citations feraient l'affaire.exec'print d;d=d[::2]+d[1::2];'*9
.sum
.APL (42)
La sortie est de haut en bas au lieu de gauche à droite (mais elle est toujours lisible par l'homme, donc je suppose que ce n'est pas contraire aux règles).
Production:
la source
K,
555351Rasé 2 caractères en passant de la représentation du symbole à la chaîne
production
la source
(2;26)
en2 26
Rubis 1.9 (
959387)Production:
la source
a=(0..51).map{|i|:A23456789TJQK[i/4]+:SCDH[i%4]}
pop
lieu deslice!
et enregistrer 6 caractères.9.times{p a;a=a.zip(a.pop 26).flatten}
Python3,
180179Sort les lignes comme dans la tâche.
Format natif 151
La sortie est comme dans la version Ruby.
la source
import
et*
: ideone.com/kQTbsGolfScript,
515046 caractèresCe code GolfScript produit la sortie suivante (voir ici ):
la source
{...}%
par4*
.Perl, 91 caractères
Des suggestions sur une façon plus concise de construire le pont initial? Mon approche utilise 2 substitutions pour construire
$_
puis une correspondance globale dans un contexte de liste pour initialiser@_
.Le brassage est alors fait par plusieurs reprises
splice
ing@_
sur@a
et entrelacer les deux listes demap
nouveau dans@_
.la source
Mathematica
13112912011410086 caractèresAvec l'aide de Mr.Wizard:
Production:
la source
NestList[Riffle@@#~Partition~26&,#<>""&/@Tuples@Characters@{"A23456789TJQK","HDCS"},8]
StringJoin
.CJam, 34 octets
CJam est plus récent que la question, donc cette réponse n'est pas en concurrence pour la coche verte, mais j'ai pensé que ce serait un bon problème à essayer dans CJam.
Testez-le ici.
Il imprime la sortie comme
Explication
la source
A,2>
pour obtenir les chiffres, bonne réflexion!R , 97 octets
Enregistré quelques octets avec une plate-forme hors service pratique
Essayez-le en ligne!
la source
/// , 753 octets
Essayez-le en ligne!
Utilise l'exemple de sortie (il est assez adapté à cet effet) sans les espaces de fin.
la source
05AB1E , 24 octets
Utilise des cartes en minuscules pour économiser 2 octets avec compression, car toute sortie lisible par l'homme est autorisée.
Le pont de début / fin est:
Essayez-le en ligne (PS: utilise l'héritage TIO car il est beaucoup plus rapide. Tous les modules intégrés qui ont été utilisés dans cette réponse sont les mêmes dans les versions héritées Python et Elixir de réécriture de 05AB1E.)
Explication:
Voir cette astuce 05AB1E (section Comment compresser des chaînes ne faisant pas partie du dictionnaire? ) Pour comprendre pourquoi
.•-Ÿ•
est"ajqk"
et.•ôì•
est"cdhs"
.la source
Japt , 31 octets
Essayez!
Bien que Japt ait une fonction raisonnable "d'entrelacer deux listes", il n'a pas une excellente option "séparé en deux". Au lieu de cela, j'ai choisi de décompresser un jeu et d'afficher simplement ces étapes en sens inverse.
Explication:
Je pourrais économiser 2 octets si je pouvais utiliser 1 pour les as au lieu de A, mais aucune des autres réponses ne l'a fait
la source
Perl 6 , 69 octets
Essayez-le en ligne!
{ .say; .[flat ^26 Z 26..*] }
est une fonction anonyme qui imprime sa liste d'arguments, puis renvoie un mélange parfait de cette listexx 9
produit une liste contenant neuf copies de cette fonction anonyme[o]
réduit cette liste avec l'opérateur de composition de fonctionso
, produisant une fonction qui appelle la fonction anonyme d'origine neuf fois, en passant la liste mélangée à chaque niveau«A {2..10} J Q K»
est une liste des rangs,<S C D H>
est une liste des combinaisons etX~
produit le produit croisé de ces listes avec l'opérateur de concaténation de chaînes~
.la source