Skip to content

Instantly share code, notes, and snippets.

@radhikalism
Created October 10, 2009 01:56
Show Gist options
  • Save radhikalism/206521 to your computer and use it in GitHub Desktop.
Save radhikalism/206521 to your computer and use it in GitHub Desktop.
(ns sudoku
(:require [clojure.contrib.seq-utils :as su]))
(defn cross [A B]
(for [a A b B] (str a b)))
(def rows "ABCDEFGHI")
(def cols "123456789")
(def digits "123456789")
(def squares (cross rows cols))
(def unitlist (concat (for [c cols] (cross rows (str c)))
(for [r rows] (cross (str r) cols))
(for [rs (partition 3 rows)
cs (partition 3 cols)]
(cross rs cs))))
(def units (into {} (map (fn [s] {s (filter #(some (partial = s) %) unitlist)}) squares)))
(def peers (into {} (map (fn [s] {s (apply hash-set (for [u (units s) s2
u :when (not= s2 s)] s2))})
squares)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment