Playing cards: Difference between revisions

Content added Content deleted
(Simpler first D entry)
(added Racket)
Line 2,348: Line 2,348:
# While no-one is looking, sneakily deal a card from the bottom of the pack
# While no-one is looking, sneakily deal a card from the bottom of the pack
deck <- deal(deck, FALSE)</lang>
deck <- deal(deck, FALSE)</lang>

=={{header|Racket}}==

<lang Racket>#lang racket

;; suits:
(define suits '(club heart diamond spade))

;; ranks
(define ranks '(1 2 3 4 5 6 7 8 9 10 jack queen king))

;; cards
(define cards
(for*/list ([suit suits] [rank ranks])
(list suit rank)))

;; a deck is a box containing a list of cards.
(define (new-deck)
(box cards))

;; shuffle the cards in a deck
(define (deck-shuffle deck)
(set-box! deck (shuffle (unbox deck))))

;; deal a card from the deck:
(define (deck-deal deck)
(begin0 (first (unbox deck))
(set-box! deck (rest (unbox deck)))))


;; TRY IT OUT:
(define my-deck (new-deck))
(deck-shuffle my-deck)
(deck-deal my-deck)
(deck-deal my-deck)
(length (unbox my-deck))</lang>

{{out}}
<pre>Welcome to DrRacket, version 5.3.3.5--2013-02-20(5eddac74/d) [3m].
Language: racket; memory limit: 512 MB.
'(heart 8)
'(diamond king)
50
> </pre>


=={{header|REXX}}==
=={{header|REXX}}==