输入输出:
输入:取自stdin的均匀随机,无限长的字符串'0'和'1'。假定该字符串是真正随机的,而不是伪随机的。这是统一的,因为每个字符均可能是“ 0”或“ 1”。
小心!输入是无限长的,因此您无法使用python中的raw_input()之类的函数将其全部存储在内存中。如果我没记错的话,golfscript将因无限输入而失败,因为它将在运行之前将整个输入压入堆栈。
输出:均匀随机混洗的标准牌组,没有小丑。这是统一的,因为所有顺序都是一样的。
输出中的每张牌都是它的等级,A,2-9,T,J,Q或K与其西服是c,d,h或s串联在一起。例如,黑桃的10个是Ts
甲板的卡片应以空格隔开。
您不能使用内置的随机库或函数,因为它们不是真正的随机的,而只是伪随机的。
输入示例
您可以使用以下python脚本将输入传递到程序中:
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
如果将脚本另存为rand.py,请使用 python rand.py | your_program
在python 3中,它按预期运行,但是在python 2.7中,我在程序输出后收到一条错误消息,但只有在所有步骤完成后,才忽略该错误消息。
输出示例:
这是如果纸牌碰巧按排序顺序应打印的方式:
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
得分:
这是代码高尔夫球。最短的代码胜出。
示例程序:
这是python 2.7解决方案,不适用。
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))),