Sha256: f375e396374d00b79f302e18b7677d53dac1dc562168892651f853c73ffae39b

Contents?: true

Size: 572 Bytes

Versions: 39

Compression:

Stored size: 572 Bytes

Contents

(ns dominoes)

(defn rm [xs x]
  (let [i (.indexOf xs x)]
    (if (= -1 i) xs (vec (concat (take i xs) (drop (inc i) xs))))))

(defn connects [[a b] [c d]]
  (cond (= b c) [c d]
        (= b d) [d c]
        :else   nil))

(defn backtrack [rem chain]
  (or (and (empty? rem) (= (ffirst chain) (second (peek chain))))
      (and (not (empty? rem))
           (some #(let [c (connects (peek chain) %)]
                    (and c (backtrack (rm rem %) (conj chain c))))
                 rem))))

(defn can-chain? [xs]
  (or (empty? xs) (some #(backtrack (rm xs %) [%]) xs)))

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.179 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.178 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.177 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.176 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.175 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.174 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.173 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.172 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.171 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.170 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.169 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.167 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.166 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.165 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.164 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.163 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.162 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.161 tracks/clojure/exercises/dominoes/src/example.clj
trackler-2.2.1.160 tracks/clojure/exercises/dominoes/src/example.clj