RosettaCodeData/Task/Deal-cards-for-FreeCell/Python/deal-cards-for-freecell.py
2023-07-01 13:44:08 -04:00

28 lines
755 B
Python

def randomGenerator(seed=1):
max_int32 = (1 << 31) - 1
seed = seed & max_int32
while True:
seed = (seed * 214013 + 2531011) & max_int32
yield seed >> 16
def deal(seed):
nc = 52
cards = list(range(nc - 1, -1, -1))
rnd = randomGenerator(seed)
for i, r in zip(range(nc), rnd):
j = (nc - 1) - r % (nc - i)
cards[i], cards[j] = cards[j], cards[i]
return cards
def show(cards):
l = ["A23456789TJQK"[int(c/4)] + "CDHS"[c%4] for c in cards]
for i in range(0, len(cards), 8):
print(" ".join(l[i : i+8]))
if __name__ == '__main__':
from sys import argv
seed = int(argv[1]) if len(argv) == 2 else 11982
print("Hand {}".format(seed))
deck = deal(seed)
show(deck)