Wejście wyjście:
Wejście : jednolicie losowy, nieskończenie długi ciąg „0” i „1”, wzięty ze standardowego wejścia. Zakłada się, że ciąg znaków jest naprawdę losowy, a nie pseudolosowy. Jest jednolity, ponieważ każda postać może być równa „0” lub „1”.
Ostrożny! Dane wejściowe są nieskończenie długie, więc nie można przechowywać wszystkiego w pamięci za pomocą funkcji takiej jak raw_input () w pythonie. Jeśli się nie mylę, golfscript zakończy się niepowodzeniem z nieskończonym wejściem, ponieważ wypycha całe wejście na stos przed uruchomieniem.
Wyjście : jednolicie losowo tasowana standardowa talia, bez żartów. Jest jednolity, ponieważ wszystkie zamówienia są jednakowo prawdopodobne.
Każda karta na wyjściu ma swoją rangę, A, 2-9, T, J, Q lub K połączoną z jej kolorem, c, d, h lub s. Na przykład 10 pik toTs
Karty z talii powinny być oddzielone spacjami.
Nie możesz używać wbudowanych losowych bibliotek lub funkcji, ponieważ nie są one tak naprawdę losowe, tylko pseudolosowe.
Przykładowe dane wejściowe
Możesz użyć następującego skryptu python, aby potokować dane wejściowe do swojego programu:
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
Jeśli zapiszesz skrypt jako rand.py, przetestuj swój program za pomocą python rand.py | your_program
W Pythonie 3 działa zgodnie z oczekiwaniami, ale w Pythonie 2.7 pojawia się komunikat o błędzie po wyjściu mojego programu, ale dopiero po wszystkim, więc po prostu zignoruj komunikat o błędzie.
Przykładowe dane wyjściowe:
Oto, jak należy wydrukować talię, jeśli zdarzyło się, że została przetasowana w uporządkowanej kolejności:
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
Punktacja:
To jest golf golfowy. Najkrótszy kod wygrywa.
Przykładowy program:
Oto rozwiązanie Python 2.7, nie gra w golfa.
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))),