Files
Tataru/sudoku.lispbm
2025-10-14 12:28:54 +02:00

27 lines
625 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
(((? x))
(map (lambda (y) (list y)) x))
(((? x) . (? xs))
(zipWith
cons
x
(transpose xs)))
(nil nil)))
(defun getCol (grid x) (getRow (transpose grid) x))