Deal cards for FreeCell: Difference between revisions

Line 2,133:
🂤 🂪 🂲 🃅 🃛 🃖 🂻 🂽
🃋 🂮 🃞 🂴</pre></big></big>
 
=={{header|Phix}}==
{{trans|ERRE}}
<lang Phix>atom seed
 
function xrnd()
seed = and_bits(seed*214013+2531011,#7FFFFFFF)
return floor(seed/power(2,16))
end function
 
sequence cards = repeat(0,52)
 
procedure deal(integer game_num)
seed = game_num
for i=1 to 52 do
cards[i] = 52-i
end for
for i=1 to 51 do
integer j = 52-mod(xrnd(),53-i)
integer s = cards[i]
cards[i] = cards[j]
cards[j] = s
end for
end procedure
 
constant suits = "CDHS",
ranks = "A23456789TJQK"
 
procedure show()
for idx=1 to 52 do
integer rank = floor(cards[idx]/4)+1
integer suit = mod(cards[idx],4)+1
integer eol = remainder(idx-1,13)=12
printf(1,"%c%c%s",{ranks[rank],suits[suit],iff(eol?"\n":" ")})
end for
end procedure
 
integer game_num = 1
--integer game_num=617
deal(game_num)
printf(1,"hand %d\n",{game_num})
show()
 
</lang>
{{out}}
<pre>
hand 1
JD 2D 9H JC 5D 7H 7C 5H KD KC 9S 5S AD
QC KH 3H 2S KS 9D QD JS AS AH 3C 4C 5C
TS QH 4H AC 4D 7S 3S TD 4S TH 8H 2C JH
7D 6D 8S 8D QS 6C 3D 8C TC 6S 9C 2H 6H
 
hand 617
7D AD 5C 3S 5S 8C 2D AH TD 7S QD AC 6D
8H AS KH TH QC 3H 9D 6S 8D 3D TC KD 5H
9S 3C 8S 7H 4D JS 4C QS 9C 9H 7C 6H 2C
2S 4S TS 2H 5D JC 6C JH QH JD KS KC 4H
</pre>
 
=={{header|PicoLisp}}==
7,794

edits