First attempt at tail recursion here

This commit is contained in:
2025-10-15 10:33:11 +02:00
parent 60fa13d0e2
commit d694adfb95

View File

@ -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 (cdr new) grids)))))
(solverHelper
(foldr (lambda (x gs)
(match x
(((?e) (?r) (?c)) (place gs r c e))))
grid size1)
grids)))))))
(solverHelper grid '())))