Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns clojure-blackjack.core
- (:require [clojure.math.combinatorics :as combo]))
- (defn get-deck []
- (let [suits ["H" "D" "C" "S"]
- faces [2 3 4 5 6 7 8 9 10 "J" "Q" "K" "A"]]
- (map clojure.string/join
- (combo/cartesian-product suits faces))))
- (defn get-decks
- [num-decks]
- (flatten (repeat num-decks (get-deck))))
- (defn shuffle-deck
- [deck]
- (shuffle (shuffle (shuffle deck))))
- (defn suit
- [card]
- (str (first card)))
- (defn face
- [card]
- (clojure.string/join (rest card)))
- (defn value
- [card]
- (let [face (get-face card)]
- (cond
- (= face "A") [1 11]
- (or (= face "J")
- (= face "Q")
- (= face "K")) [10]
- :else [(read-string face)])))
- (defn hand-value
- [cards]
- (let [values (map value cards)]
- (map #(reduce + %)
- (apply combo/cartesian-product values))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement