27 lines
593 B
Plaintext
27 lines
593 B
Plaintext
(define nums '(1 2 3 4 5 6 7 8 9))
|
|
|
|
(defun amount (x y)
|
|
(foldr (lambda (z q) (if (eq x z) (+ q 1) q)) 0 y))
|
|
|
|
(defun valid (x)
|
|
(if (= 9 (length x))
|
|
(foldr (lambda (y z) (if (<= y 1) z nil))
|
|
t
|
|
(map (lambda (y) (amount y x)) nums))
|
|
nil))
|
|
|
|
(defun getRow (grid x) (ix grid x))
|
|
|
|
(defun transpose (grid)
|
|
(match grid
|
|
(nil nil)
|
|
(((? x))
|
|
(map (lambda (y) (list y)) x))
|
|
(((? x) . (? xs))
|
|
(zipWith
|
|
cons
|
|
x
|
|
(transpose xs)))))
|
|
|
|
(defun getCol (grid x) (getRow (transpose grid) x))
|