RosettaCodeData/Task/Deal-cards-for-FreeCell/Lua/deal-cards-for-freecell.lua
2014-01-17 05:34:36 +00:00

36 lines
776 B
Lua

deck = {}
rank = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"}
suit = {"C", "D", "H", "S"}
two31, state = bit32.lshift(1, 31), 0
function rng()
state = (214013 * state + 2531011) % two31
return bit32.rshift(state, 16)
end
function initdeck()
for i, r in ipairs(rank) do
for j, s in ipairs(suit) do
table.insert(deck, r .. s)
end
end
end
function deal(num)
initdeck()
state = num
print("Game #" .. num)
repeat
choice = rng(num) % #deck + 1
deck[choice], deck[#deck] = deck[#deck], deck[choice]
io.write(" " .. deck[#deck])
if (#deck % 8 == 5) then
print()
end
deck[#deck] = nil
until #deck == 0
print()
end
deal(1)
deal(617)