입출력:
입력 : stdin에서 가져온 균일하게 임의의 무한 길이의 '0'과 '1'. 문자열은 의사 난수가 아니라 실제로 무작위로 가정됩니다. 각 문자가 '0'또는 '1'일 가능성이 균일합니다.
꼼꼼한! 입력은 무한히 길기 때문에 파이썬에서 raw_input ()과 같은 함수를 사용하여 메모리에 모두 저장할 수는 없습니다. 내가 실수하지 않으면 골프 스크립트는 실행하기 전에 전체 입력을 스택에 푸시하기 때문에 무한 입력으로 실패합니다.
출력 : 조커없이 균일하게 무작위 섞인 표준 데크. 모든 주문이 똑같이 가능하다는 점에서 균일합니다.
출력의 각 카드는 등급, A, 2-9, T, J, Q 또는 K이며 정장, c, d, h 또는 s에 연결됩니다. 예를 들어, 10 개의 스페이드는Ts
갑판의 카드는 공백으로 분리해야합니다.
내장 무작위 라이브러리 또는 함수는 실제로 무작위가 아니고 의사 난수이기 때문에 사용할 수 없습니다.
입력 예
다음 파이썬 스크립트를 사용하여 입력을 프로그램에 파이프 할 수 있습니다.
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
스크립트를 rand.py로 저장하면 다음을 사용하여 프로그램을 테스트하십시오. python rand.py | your_program
파이썬 3에서는 예상대로 실행되지만 파이썬 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
채점 :
이것은 코드 골프입니다. 가장 짧은 코드가 승리합니다.
프로그램 예 :
골프가 아닌 파이썬 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))),