入出力:
入力: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))),