Entrée sortie:
Entrée : une chaîne uniformément aléatoire, infiniment longue, de «0 et de 1», prise à partir de stdin. La chaîne est supposée être vraiment aléatoire, pas pseudo-aléatoire. Il est uniforme en ce que chaque caractère est également susceptible d'être un «0» ou un «1».
Prudent! L'entrée est infiniment longue, vous ne pouvez donc pas tout stocker en mémoire en utilisant une fonction comme raw_input () en python. Si je ne me trompe pas, golfscript échouera avec une entrée infinie, car il pousse toute l'entrée sur la pile avant de courir.
Sortie : Un deck standard mélangé de manière uniforme et aléatoire, sans jokers. Il est uniforme en ce sens que toutes les commandes sont également probables.
Chaque carte dans la sortie est son rang, A, 2-9, T, J, Q ou K concaténé avec sa couleur, c, d, h ou s. Par exemple, le 10 de pique estTs
Les cartes du jeu doivent être séparées par des espaces.
Vous ne pouvez pas utiliser de bibliothèques ou de fonctions aléatoires intégrées car elles ne sont pas vraiment aléatoires, uniquement pseudo-aléatoires.
Exemple d'entrée
Vous pouvez utiliser le script python suivant pour diriger les entrées dans votre programme:
import sys, random
try:
while True:
sys.stdout.write(str(random.randint(0,1)))
except IOError:
pass
Si vous enregistrez le script sous rand.py, testez votre programme avec python rand.py | your_program
En python 3, il fonctionne comme prévu, mais en python 2.7 j'obtiens un message d'erreur après la sortie de mon programme, mais seulement après que tout soit fait, donc ignorez simplement le message d'erreur.
Exemple de sortie:
Voici comment imprimer le jeu s'il est mélangé dans un ordre trié:
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
Notation:
Ceci est un golf de code. Le code le plus court gagne.
Exemple de programme:
Voici une solution python 2.7, non golfée.
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))),