Deal cards for FreeCell: Difference between revisions
Content added Content deleted
(Added Elixir) |
(→{{header|Logo}}: Add implementation.) |
||
Line 1,662: | Line 1,662: | ||
} |
} |
||
</lang> |
</lang> |
||
=={{header|Logo}}== |
|||
<lang logo>; Linear congruential random number generator |
|||
make "_lcg_state 0 |
|||
to seed_lcg :seed |
|||
make "_lcg_state :seed |
|||
end |
|||
to sample_lcg |
|||
local "rand |
|||
make "_lcg_state modulo sum product 214013 :_lcg_state 2531011 2147483648 |
|||
make "rand int quotient :_lcg_state 65536 |
|||
output :rand |
|||
end |
|||
; FreeCell |
|||
to card_from_number :number |
|||
output word item sum 1 int quotient :number 4 "A23456789TJQK item sum 1 modulo :number 4 "CDHS |
|||
end |
|||
to generate_deal :number |
|||
(local "deck "size "index "deal) |
|||
seed_lcg :number |
|||
make "deck [] |
|||
repeat 52 [ |
|||
make "deck lput difference # 1 :deck |
|||
] |
|||
make "deck listtoarray :deck |
|||
make "deal [] |
|||
repeat 52 [ |
|||
make "size difference 53 # |
|||
make "index sum 1 modulo sample_lcg :size |
|||
make "deal lput item :index :deck :deal |
|||
setitem :index :deck item :size :deck |
|||
] |
|||
output :deal |
|||
end |
|||
to print_deal :number |
|||
(local "deal "i "j "index) |
|||
make "deal generate_deal :number |
|||
repeat 7 [ |
|||
make "i difference # 1 |
|||
repeat (ifelse [equal? :i 6] 4 8) [ |
|||
make "j difference # 1 |
|||
make "index (sum 1 product :i 8 :j) |
|||
type (word (card_from_number item :index :deal) "| |) |
|||
] |
|||
print "|| |
|||
] |
|||
end |
|||
print [Game #1] |
|||
print_deal 1 |
|||
print "|| |
|||
print [Game #617] |
|||
print_deal 617 |
|||
print "|| |
|||
bye</lang> |
|||
{{Out}} |
|||
<pre>Game #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 |
|||
Game #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|Lua}}== |
=={{header|Lua}}== |