Giriş çıkış:
Girdi : Düzgün rasgele, sonsuz uzunlukta, stdin'den alınan '0'lar ve' 1'ler dizisi. Dizgenin sözde rastgele değil, gerçekten rastgele olduğu varsayılır. Her karakterin eşit olarak '0' veya '1' olması muhtemeldir.
Dikkatli! Giriş sonsuza kadar uzun olduğundan, python'da raw_input () gibi bir işlevi kullanarak hepsini bellekte saklayamazsınız. Yanılmıyorsam, golfscript sonsuz girdi ile başarısız olur, çünkü çalıştırmadan önce tüm girdiyi yığının üzerine iter.
Çıktı : Eşitsiz rastgele karıştırılmış standart güverte, joker olmadan. Tüm siparişlerin eşit derecede muhtemel olması tekdüzedir.
Çıktıdaki her kart sıra, A, 2-9, T, J, Q veya K, takım elbise, c, d, h veya s ile birleştirilir. Örneğin, maça 10'uTs
Destenin kartları boşluklarla ayrılmalıdır.
Yerleşik rasgele kitaplıkları veya işlevleri kullanamazsınız çünkü bunlar gerçekten rasgele değil, yalnızca sahte rasgele.
Örnek giriş
Programınıza girişi yönlendirmek için aşağıdaki python komut dosyasını kullanabilirsiniz:
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
Komut dosyasını rand.py olarak kaydederseniz, programınızı python rand.py | your_program
Python 3'te beklendiği gibi çalışır, ancak python 2.7'de programımın çıktısından sonra bir hata mesajı alıyorum, ancak sadece her şey yapıldıktan sonra, bu yüzden hata mesajını görmezden gelin.
Örnek çıktı:
Sıralanmış bir sıraya karıştırılmışsa, destenin nasıl yazdırılması gerektiği aşağıda açıklanmıştır:
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
puanlama:
Bu bir kod golf. En kısa kod kazanır.
Örnek program:
İşte bir python 2.7 çözümü, golf değil.
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))),