Ввод, вывод:
Входные данные : равномерно случайная, бесконечно длинная строка «0» и «1», взятая из стандартного ввода. Предполагается, что строка действительно случайная, а не псевдослучайная. Он одинаков в том смысле, что каждый символ в равной степени может быть «0» или «1».
Осторожный! Входные данные бесконечно длинные, поэтому вы не можете хранить все это в памяти, используя функцию, подобную raw_input () в python. Если я не ошибаюсь, 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))),