Deal cards for FreeCell: Difference between revisions
Content added Content deleted
Line 2,133: | Line 2,133: | ||
🂤 🂪 🂲 🃅 🃛 🃖 🂻 🂽 |
🂤 🂪 🂲 🃅 🃛 🃖 🂻 🂽 |
||
🃋 🂮 🃞 🂴</pre></big></big> |
🃋 🂮 🃞 🂴</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}}== |
=={{header|PicoLisp}}== |