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}}== |