27 lines
		
	
	
		
			625 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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))
 |