Advertisement
Guest User

Untitled

a guest
Jan 1st, 2015
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (ns clojure-blackjack.core
  2.   (:require [clojure.math.combinatorics :as combo]))
  3.  
  4. (defn get-deck []
  5.   (let [suits ["H" "D" "C" "S"]
  6.         faces [2 3 4 5 6 7 8 9 10 "J" "Q" "K" "A"]]
  7.     (map clojure.string/join
  8.          (combo/cartesian-product suits faces))))
  9.  
  10. (defn get-decks
  11.   [num-decks]
  12.   (flatten (repeat num-decks (get-deck))))
  13.  
  14. (defn shuffle-deck
  15.   [deck]
  16.   (shuffle (shuffle (shuffle deck))))
  17.  
  18. (defn suit
  19.   [card]
  20.   (str (first card)))
  21.  
  22. (defn face
  23.   [card]
  24.   (clojure.string/join (rest card)))
  25.  
  26. (defn value
  27.   [card]
  28.   (let [face (get-face card)]
  29.     (cond
  30.       (= face "A") [1 11]
  31.       (or (= face "J")
  32.           (= face "Q")
  33.           (= face "K")) [10]
  34.       :else [(read-string face)])))
  35.  
  36. (defn hand-value
  37.   [cards]
  38.   (let [values (map value cards)]
  39.     (map #(reduce + %)
  40.          (apply combo/cartesian-product values))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement