First attempt at tail recursion here
This commit is contained in:
		| @ -134,7 +134,7 @@ | ||||
| (defun printSudoku (m) (loopforeach i m (print i))) | ||||
|  | ||||
| (defun solve (grid) | ||||
|   (let ((empties (findEmpty grid)) | ||||
|   (let ((solverHelper (lambda (grid grids) (let ((empties (findEmpty grid)) | ||||
|         (size1 (foldr | ||||
|                   (lambda (x ys) | ||||
|                     (let ((e (match x | ||||
| @ -154,17 +154,16 @@ | ||||
|     (if (eq empties nil) | ||||
|         (if (valid grid) | ||||
|             grid | ||||
|             'not-valid) | ||||
|             (solverHelper (car grids) (cdr grids))) | ||||
|         (if (eq size1 nil) | ||||
|             (match (car others) | ||||
|                    (((? es) (?r) (?c)) | ||||
|                     (foldr | ||||
|                      (lambda (e ys) (match (solve (place grid r c e)) | ||||
|                                         ('not-valid ys) | ||||
|                                         (xs xs))) | ||||
|                      nil | ||||
|                      es))) | ||||
|             (solve (foldr (lambda (x gs) | ||||
|                      (match x | ||||
|                         (((?e) (?r) (?c)) (place gs r c e)))) | ||||
|                    grid size1)))))) | ||||
|                     (let ((new (map (lambda (e) (place grid r c e)) es))) | ||||
|                       (solverHelper (car new) (append grids (new)))))) | ||||
|             (solverHelper | ||||
|              (foldr (lambda (x gs) | ||||
|                       (match x | ||||
|                              (((?e) (?r) (?c)) (place gs r c e)))) | ||||
|                     grid size1) | ||||
|              grids))))))) | ||||
|     (solverHelper grid '()))) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user