Explore Library
Code QuizAdvanced

Backtracking Forgets To Undo

A CSP backtracker never removes a failed assignment, corrupting later branches.

Codejavascript
function backtrack(assignment) {
  if (isComplete(assignment)) return assignment;
  const v = selectUnassigned(assignment);
  for (const val of domain(v)) {
    if (isConsistent(v, val, assignment)) {
      assignment[v] = val;
      const result = backtrack(assignment);
      if (result) return result;
    }
  }
  return null;
}

The search reports failure even for solvable problems. What is the bug?