Entrada / Saída:
Entrada : Uma sequência uniformemente aleatória, infinitamente longa, de '0' e '1', tirada de stdin. A string é assumida como sendo verdadeiramente aleatória, não pseudo-aleatória. É uniforme que cada personagem tem a mesma probabilidade de ser um '0' ou '1'.
Cuidado! A entrada é infinitamente longa, portanto você não pode armazenar tudo na memória usando uma função como raw_input () em python. Se não me engano, golfscript falhará com entrada infinita, pois coloca toda a entrada na pilha antes da execução.
Saída : Um baralho padrão aleatório e aleatoriamente uniforme, sem coringas. É uniforme, pois todos os pedidos são igualmente prováveis.
Cada carta na saída é sua classificação, A, 2-9, T, J, Q ou K concatenadas com seu naipe, c, d, h ou s. Por exemplo, o 10 de espadas éTs
As cartas do baralho devem ser separadas por espaços.
Você não pode usar bibliotecas ou funções aleatórias internas porque elas não são verdadeiramente aleatórias, apenas pseudo-aleatórias.
Exemplo de entrada
Você pode usar o seguinte script python para canalizar a entrada no seu programa:
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
Se você salvar o script como rand.py, teste seu programa com python rand.py | your_program
No python 3, ele é executado conforme o esperado, mas no python 2.7, recebo uma mensagem de erro após a saída do meu programa, mas somente depois que tudo estiver pronto, então ignore a mensagem de erro.
Exemplo de saída:
Veja como o baralho deve ser impresso, se for embaralhado em uma ordem classificada:
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
Pontuação:
Este é um código de golfe. O menor código vence.
Exemplo de programa:
Aqui está uma solução python 2.7, não jogada de golfe.
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))),