Input output:
Input : String acak '0' dan '1' yang seragam, panjang, dan tak terhingga, diambil dari stdin. String diasumsikan benar-benar acak, bukan pseudo-acak. Ini seragam karena setiap karakter memiliki kemungkinan yang sama untuk menjadi '0' atau '1'.
Cermat! Inputnya panjang sekali, jadi Anda tidak bisa menyimpan semuanya dalam memori menggunakan fungsi seperti raw_input () dalam python. Jika saya tidak salah, skrip golf akan gagal dengan input yang tidak terbatas, karena mendorong seluruh input ke stack sebelum menjalankan.
Output : Dek standar acak acak acak, tanpa pelawak. Ini seragam karena semua pemesanan memiliki kemungkinan yang sama.
Setiap kartu dalam output adalah peringkatnya, A, 2-9, T, J, Q atau K yang digabungkan dengan suit, c, d, h atau s. Misalnya, 10 sekop adalahTs
Kartu-kartu geladak harus dipisahkan oleh spasi.
Anda tidak boleh menggunakan pustaka atau fungsi acak bawaan karena tidak benar-benar acak, hanya pseudo-acak.
Contoh input
Anda dapat menggunakan skrip python berikut untuk memasukkan input ke program Anda:
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
Jika Anda menyimpan skrip sebagai rand.py, uji program Anda dengan python rand.py | your_program
Dalam python 3 ini berjalan seperti yang diharapkan, tetapi dalam python 2.7 saya mendapatkan pesan kesalahan setelah output program saya, tetapi hanya setelah semuanya selesai, jadi abaikan saja pesan kesalahan itu.
Contoh output:
Begini cara dek harus dicetak jika kebetulan diacak menjadi urutan:
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
Mencetak:
Ini adalah kode golf. Kode terpendek menang.
Contoh program:
Berikut ini adalah solusi python 2.7, bukan golf.
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))),