Erläuterung
Ein perfektes Mischen ist, wenn ein Kartenspiel genau in zwei Hälften geteilt wird und die Karten von jedem Stapel abwechselnd verschachtelt werden. Die ursprünglichen unteren Karten und die ursprüngliche oberste Karte müssen nach einem perfekten Mischen aufbewahrt werden.
Nach 8 perfekten Mischvorgängen kehrt ein Standardkartenspiel mit 52 Karten in seine ursprüngliche Reihenfolge zurück.
Herausforderung
Schreiben Sie ein Programm, das den Status eines Kartenspiels anzeigt, während es 8 aufeinanderfolgende perfekte Mischvorgänge durchläuft. Sie können jede von Menschen lesbare Darstellung eines Kartensatzes verwenden, vorausgesetzt, dass die Nummer und Farbe jeder Karte im Kartensatz nacheinander angezeigt werden. Es muss für alle neun Staaten eine Darstellung aller Karten anzeigen.
Das ist Codegolf , also gewinnt die kürzeste Lösung.
Beispielausgabe
Hier ist eine Beispielausgabe dieser Beispielimplementierung in 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
quelle
Antworten:
J,
66655452504743 ZeichenAusgabe:
Ich werde immer weiter in Js Tutorials und Referenzhandbüchern gezwungen, hier vorne zu bleiben. : -S
quelle
AS
und die letzte ist die ganze ZeitKH
.Haskell, 103
Ausgabe:
Ich weiß nicht, ob es hier irgendwelche UTF-8-Probleme gibt. Sollte das nicht so sein? Dies ist ein Hex-Dump des Programms
und der ersten Ausgangsleitung
(die Unicode-Spielkarten )
quelle
Python 2, 79 Zeichen
Die Ausgabe ist ein bisschen hässlich, aber ich denke, es sollte zählen.
quelle
product
!Python2, 104
Dies ähnelt der Lösung von Ev_Genus. Ich lege die Farbe vor den Rang, weil ich so einen Charakter speichern kann.
Ausgabe
quelle
[r,'10'][r>"Q"]
ist schick. Ich glaube nicht, dass du Backticks brauchst10
. Zitate würden gut tun.exec'print d;d=d[::2]+d[1::2];'*9
.sum
.APL (42)
Die Ausgabe erfolgt von oben nach unten anstatt von links nach rechts (aber sie ist immer noch von Menschen lesbar, ich denke, sie verstößt nicht gegen die Regeln).
Ausgabe:
quelle
K
555351Rasiert 2 Zeichen durch Wechsel von Symboldarstellung zu Zeichenfolge
Ausgabe
quelle
(2;26)
auf2 26
Ruby 1.9 (
959387)Ausgabe:
quelle
a=(0..51).map{|i|:A23456789TJQK[i/4]+:SCDH[i%4]}
pop
anstelle vonslice!
6 Zeichen verwenden und diese speichern können.9.times{p a;a=a.zip(a.pop 26).flatten}
Python3,
180179Gibt Zeilen wie in task aus.
Natives Format 151
Die Ausgabe erfolgt wie in der Ruby-Version.
quelle
import
und löschen*
: ideone.com/kQTbsGolfScript,
515046 ZeichenDieser GolfScript-Code liefert folgende Ausgabe (siehe hier ):
quelle
{...}%
durch4*
.Perl, 91 Zeichen
Irgendwelche Vorschläge für eine präzisere Art, das erste Deck zu erstellen? Mein Ansatz verwendet 2 Ersetzungen zum Erstellen
$_
und dann eine globale Übereinstimmung im Listenkontext zum Initialisieren@_
.Die schlurfenden erfolgt dann durch wiederholtes
splice
ing@_
auf@a
und Verschachtelung der beiden Listen mitmap
zurück in@_
.quelle
Mathematica
13112912011410086 ZeichenMit Hilfe von Mr.Wizard:
Ausgabe:
quelle
NestList[Riffle@@#~Partition~26&,#<>""&/@Tuples@Characters@{"A23456789TJQK","HDCS"},8]
StringJoin
.CJam, 34 Bytes
CJam ist neuer als die Frage, daher konkurriert diese Antwort nicht um das grüne Häkchen, aber ich dachte, dies wäre ein schönes Problem, um es in CJam zu versuchen.
Teste es hier.
Es druckt die Ausgabe wie
Erläuterung
quelle
A,2>
es, die Zahlen zu bekommen, gutes Denken!R 97 Bytes
Ein paar Bytes mit einem praktischen Ausserordnungsdeck gespart
Probieren Sie es online!
quelle
/// 753 Bytes
Probieren Sie es online!
Verwendet die Beispielausgabe (für diesen Zweck ist sie ziemlich geeignet) ohne die nachfolgenden Leerzeichen.
quelle
05AB1E , 24 Byte
Spart mit Kleinbuchstaben 2 Bytes bei der Komprimierung, da jede lesbare Ausgabe zulässig ist.
Start / End-Deck ist:
Probieren Sie es online aus (PS: Verwendet das Legacy-TIO, da es viel schneller ist. Alle in dieser Antwort verwendeten Buildins sind jedoch in der Python-Legacy- und der Elixir-Rewrite-Version von 05AB1E identisch.)
Erläuterung:
Sehen Sie sich meinen Tipp 05AB1E an (Abschnitt So komprimieren Sie Zeichenfolgen, die nicht Teil des Wörterbuchs sind ), um zu verstehen, warum dies so
.•-Ÿ•
ist"ajqk"
und.•ôì•
ist"cdhs"
.quelle
Japt , 31 Bytes
Versuch es!
Obwohl Japt eine vernünftige Funktion zum "Verschachteln von zwei Listen" hat, gibt es keine großartige Option "In Hälften trennen". Stattdessen habe ich mich entschieden ein Deck mischen und diese Schritte nur in umgekehrter Reihenfolge anzuzeigen.
Erläuterung:
Ich könnte 2 Bytes sparen, wenn ich 1 für Asse anstelle von A verwenden könnte, aber keine der anderen Antworten tat das
quelle
Perl 6 , 69 Bytes
Probieren Sie es online!
{ .say; .[flat ^26 Z 26..*] }
ist eine anonyme Funktion, die ihre Argumentliste druckt und dann eine perfekte Mischung dieser Liste zurückgibtxx 9
Erstellt eine Liste mit neun Kopien dieser anonymen Funktion[o]
reduziert diese Liste mit dem Funktionszusammensetzungsoperatoro
wird eine Funktion erstellt, die die ursprüngliche anonyme Funktion neunmal aufruft und die gemischte Liste auf jeder Ebene weitergibt«A {2..10} J Q K»
ist eine Liste der Reihen,<S C D H>
ist eine Liste der Farben undX~
erzeugt das Kreuzprodukt dieser Listen mit dem String-Verkettungsoperator~
.quelle