Der erste Zaubertrick, den ich als Kind gelernt habe, war der folgende:
- Haben Sie 1 Kartenspiel, bei dem das Muster auf der Rückseite nicht vertikal symmetrisch ist.
- Ordne alle Karten so an, dass sie in eine Richtung zeigen.
- Bitten Sie eine Person, "eine Karte auszuwählen, sie auswendig zu lernen und sie Ihnen zurückzugeben".
- Legen Sie es in die falsche Richtung auf das Deck.
- Mische kräftig und gib die Illusion, dass du nicht weißt, wo ihre Karte ist.
- Legen Sie zu ihrem Erstaunen die Karte vor.
Dieser Trick ist in der Natur heutzutage offensichtlich ein bisschen mangelhaft, aber er ist eine gute Herausforderung. Schreiben Sie ein Programm, das, wenn keine Eingabe erfolgt, ein zufällig gemischtes Kartenspiel ausgibt, wobei eine der zufällig ausgewählten Karten umgekehrt wird. Wenn es sich bei der Eingabe jedoch um ein Kartenspiel mit einer umgekehrten Karte handelt, müssen Sie die umgekehrte Karte ausgeben (in der richtigen Reihenfolge).
Das Kartenspiel
Ein Kartenspiel ist definiert als:
[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]
Eine Karte ist definiert als ihre Nummer, dann der erste Buchstabe ihrer Farbe. Die Rückseite einer Karte ist das genaue Gegenteil, der erste Buchstabe der Farbe, gefolgt von einer Zahl.
Die gezogene Karte
Beispiel: Wenn die Karte, die wir zufällig umgedreht haben, die war 4 of Clubs (4C)
, würden wir am Ende (natürlich ohne zu mischen):
[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]
Das Mischen
Dann nach dem Mischen:
[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]
Dies ist eine gültige Ausgabe bei leerer Eingabe.
Der Deck-Eingang
Wenn jedoch umgekehrt unser Programm die obige Ausgabe als Eingabe empfängt, sollte sie ausgegeben werden 4C
. Das heißt für eine Eingabe von:
[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]
Sie iterieren, bis Sie die umgedrehte Karte gefunden haben, und kehren sie in den Normalzustand zurück. Hier finden wir also C4
, dass C keine Zahl ist, und geben sie als zurück 4C
, was korrekt ist.
Regeln
- Sie dürfen das Deck nicht von externen Quellen laden.
- Eine leere Eingabe sollte zu einem zufällig gemischten Deck mit 1 umgedrehten zufälligen Karte führen.
- Ein Kartenspiel, bei dem 1 Karte als Eingabe umgekehrt ist, sollte die umgekehrte Karte ergeben.
- Alle anderen Eingaben können dazu führen, dass explosive Lamas auf Segways durch eine futuristische Röhre fahren.
- Oder irgendetwas anderes.
- Sowohl die gewählte Karte als auch die Mischreihenfolge müssen einheitlich zufällig sein.
- IE alle Karten haben die gleiche Chance, ausgewählt zu werden, umgedreht zu werden.
- IE haben alle Kartenkombinationen die gleiche Chance zu erscheinen.
- Sie können
SHCD
odershcd
für die Anzüge verwenden, aber konsistent sein:- Wenn Sie Anzüge in Großbuchstaben (
SHCD
) auswählen, müssen Sie auch verwendenTJQKA
. - Wenn Sie Anzüge in Kleinbuchstaben (
shcd
) auswählen, müssen Sie auch verwendentjqka
.
- Wenn Sie Anzüge in Großbuchstaben (
- Dies ist Code-Golf , der Gewinner hat die niedrigsten Bytes.
quelle
Antworten:
Netzhaut ,
616059 BytesProbieren Sie es online! Bearbeiten:
12 Bytes dank @MartinEnder gespeichert. Erläuterung:Löschen Sie alle nicht rückgängig gemachten Karten. Dies sollte eine umgedrehte Karte oder keine Karten hinterlassen.
Wenn die Eingabe (jetzt) leer ist, erstellen Sie ein Kartenspiel.
Wähle zufällig eine Karte aus und kehre sie um (hebe die Umkehrung der einzelnen Karte auf).
Mische die Karte (n).
quelle
05AB1E , 29 Bytes
Probieren Sie es online!
quelle
1
unda
drin.Y9ŸJ
als9LJ
PowerShell v2 oder höher, 175 Byte
Lange Version:
Verwendung:
Erstelle ein gemischtes Deck und speichere es in einer Variablen:
Überprüfen Sie beispielsweise die Variable nach Belieben
Pipe das Deck zurück in das Skript:
quelle
Python 2 , 175 Bytes
Probieren Sie es online! leere Eingabe wird als bezeichnet
[]
quelle
> <> ,
215193 BytesProbieren Sie es online!
Nimmt Eingaben als nicht getrennte Karten und gibt sie als dieselben aus (zB
KCAC5C6S...
)Um das Testen zu vereinfachen, finden Sie hier eine Version , bei der die Eingabe durch Kommas und die Ausgabe durch Zeilenvorschub getrennt ist.
Alle
x0
s sind nur ein Versuch, einen halbgleichmäßigen Zufallszahlengenerator zu erstellen. Mehr von ihnen erhöht den Bereich möglicher Werte und das Gegenteil für weniger. 10 davon habe ich als zufällig genug eingestuft.Beachten Sie, dass die folgenden Regeln eingehalten werden:
Aber nicht alle gemischten Kombinationen sind mögliche Ausgaben (und in der Tat ist die überwiegende Mehrheit nicht).
quelle
Gelee , 26 Bytes
Ein monadischer Link, der eine Liste von Zeichenlisten akzeptiert (ein Stub von 0 Karten oder ein vollständiges Deck von 52 Karten mit einer umgedrehten Karte) und eine Liste von Zeichenlisten zurückgibt (ein Stub der 1 umgedrehten Karte, aber vorwärts oder voll) -deck mit einer zufälligen Karte umgedreht).
Probieren Sie es online! (Fußzeile, damit Eingabe- und Ausgabedarstellungen übereinstimmen)
Wie?
quelle
Ẋ
vor dem behoben werdenU
(vielleicht kann ich stattdessen für null Bytes korrigieren), muss es aber später tun ...[[number, suit]]
anstatt[number, suit]
eine einzelne Karte darzustellen, wenn die Eingabe nicht leer ist.Ruby , 95 (oder 100) Bytes
Wenn ein leeres Array als Eingabe angegeben wird, wird das Deck als Array von Strings zurückgegeben. Bei einem nicht leeren Array als Eingabe wird die umgedrehte Karte als Array mit einer einzelnen Zeichenfolge zurückgegeben. Wenn die umgedrehte Karte als Zeichenfolge und nicht als Einzelelement-Array mit einer Zeichenfolge benötigt wird, werden mit den folgenden Schritten 5 Byte hinzugefügt: change
s-n
to(s-n)[0]
Probieren Sie es online!
Die erste Zeile erzeugt ein Standarddeck. Die zweite Zeile setzt sich wie folgt zusammen
quelle
Java 8,
275274259 BytesDie Eingabe ist eine Zeichenfolge, die Ausgabe ist
java.util.List
abhängig von der Eingabe entweder eine Zeichenfolge oder eine .Erläuterung:
Probieren Sie es online aus.
quelle
Pyth, 45 Bytes
Übernimmt die leere Liste für leere Eingaben.
Probieren Sie es online aus
Erläuterung
quelle
R ,
177171 BytesProbieren Sie es online!
Bei leerer Eingabe (Aufruf
f
ohne Eingabe) wird standardmäßigl=1
eine zufällige Permutationm
des Decks erstellt. Vorausgesetzt, essample
ist wirklich zufällig, besteht die gleiche Wahrscheinlichkeit, dass eine Karte die erste in dieser Liste ist. Also modifizieren wir die erste und mischen sie dann erneut, um die Liste zurückzugeben.SDHC
Umgekehrt suchen wir eine Karte, die mit einer von ihnen beginnt, und kehren sie um.quelle
Python 2 , 135 Bytes
Probieren Sie es online!
Karten sind Tupel von
(value,suit)
Leere Eingabe ist
[]
quelle