diff --git a/sudoku.lispbm b/sudoku.lispbm index 33eb997..614e981 100644 --- a/sudoku.lispbm +++ b/sudoku.lispbm @@ -1,15 +1,12 @@ (define nums '(1 2 3 4 5 6 7 8 9)) -(define valid - (lambda (x) - (foldr - (lambda (y z) - (match y - (nil z) - (_ (match (filter (lambda (q) (= q y)) nums) - (((? r) . nil) (match (filter (lambda (q) (eq r q)) x) - (((? _)) z) - (_ nil))) - (_ nil))))) - t - x))) +(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 + ))