Playing cards: Difference between revisions

Add Nimrod
(Add Rust version.)
(Add Nimrod)
Line 2,171:
=={{header|MUMPS}}==
See [[Playing Cards/MUMPS]]
 
=={{header|Nimrod}}==
<lang nimrod>import math
randomize()
 
proc shuffle[T](x: var seq[T]) =
for i in countdown(x.high, 0):
let j = random(i + 1)
swap(x[i], x[j])
 
type
Suit = enum ♥, ♦, ♣, ♠
 
Pip = enum c02, c03, c04, c05, c06, c07, c08, c09, c10, cQu, cKi, cAs
 
Card = object
pip: Pip
suit: Suit
 
Deck = object
cards: seq[Card]
 
proc `$`(c: Card): string = $c.pip & $c.suit
 
proc initDeck(): Deck =
result = Deck(cards: @[])
for suit in Suit:
for pip in Pip:
result.cards.add Card(pip: pip, suit: suit)
 
proc `$`(d: Deck): string = $d.cards
 
proc shuffle(d: var Deck) = shuffle(d.cards)
 
proc deal(d: var Deck): Card =
d.shuffle()
d.cards.pop()
 
var d = initDeck()
echo "40 cards from a deck:"
for i in 0..4:
for j in 0..7:
stdout.write($d.deal(), " ")
echo ""
echo "The remaining cards are: ", $d</lang>
 
=={{header|OCaml}}==
Anonymous user