Input-Output:
Eingabe : Eine gleichmäßig zufällige, unendlich lange Folge von '0' und '1', entnommen aus stdin. Es wird angenommen, dass die Zeichenfolge wirklich zufällig und nicht pseudozufällig ist. Es ist insofern einheitlich, als jedes Zeichen gleich wahrscheinlich eine '0' oder '1' ist.
Vorsichtig! Die Eingabe ist unendlich lang, sodass Sie nicht alles mit einer Funktion wie raw_input () in Python im Speicher speichern können. Wenn ich mich nicht irre, schlägt Golfscript mit unendlicher Eingabe fehl, da es die gesamte Eingabe vor dem Ausführen auf den Stapel schiebt.
Ausgabe : Ein gleichmäßig zufällig gemischtes Standarddeck ohne Joker. Es ist insofern einheitlich, als alle Bestellungen gleich wahrscheinlich sind.
Jede Karte in der Ausgabe hat den Rang A, 2-9, T, J, Q oder K, der mit der Farbe c, d, h oder s verknüpft ist. Zum Beispiel ist die 10 PikTs
Die Karten des Decks sollten durch Leerzeichen getrennt sein.
Sie dürfen keine integrierten Zufallsbibliotheken oder Funktionen verwenden, da diese nicht wirklich zufällig sind, sondern nur pseudozufällig.
Beispiel Eingabe
Sie können das folgende Python-Skript verwenden, um Eingaben in Ihr Programm zu leiten:
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
Wenn Sie das Skript als rand.py speichern, testen Sie Ihr Programm mit python rand.py | your_program
In Python 3 läuft es wie erwartet, aber in Python 2.7 wird nach der Ausgabe meines Programms eine Fehlermeldung angezeigt, jedoch erst, nachdem alles erledigt ist. Ignorieren Sie einfach die Fehlermeldung.
Beispielausgabe:
So sollte das Deck gedruckt werden, wenn es zufällig in eine sortierte Reihenfolge gemischt wird:
Ac 2c 3c 4c 5c 6c 7c 8c 9c Tc Jc Qc Kc Ad 2d 3d 4d 5d 6d 7d 8d 9d Td Jd Qd Kd Ah 2h 3h 4h 5h 6h 7h 8h 9h Th Jh Qh Kh As 2s 3s 4s 5s 6s 7s 8s 9s Ts Js Qs Ks
Wertung:
Dies ist ein Code Golf. Der kürzeste Code gewinnt.
Beispielprogramm:
Hier ist eine Python 2.7-Lösung, die nicht Golf spielt.
import sys
def next():
return int(sys.stdin.read(1))==1
def roll(n):
if n==1:
return 0
if n%2==0:
r=roll(n/2)
if next():
r+=n/2
return r
else:
r=n
while(r==n):
r=roll(n+1)
return r
deck = [rank+suit for suit in 'cdhs' for rank in 'A23456789TJQK']
while len(deck)>0:
print deck.pop(roll(len(deck))),