"""Original local Sudoku teaching fixture, version 1.0, Learn Coding USA, 2026-11-01. Standard-library only. Run in an empty folder: writes data/ and output/. Deterministic MRV backtracking, ascending digits. Not a reproduction of Williams. """ from pathlib import Path import csv,json,time,platform,sys R=Path(__file__).resolve().parent for x in ['data','output']:(R/x).mkdir(exist_ok=True) base=[(r*3+r//3+c)%9+1 for r in range(9) for c in range(9)] def encode(b):return ''.join(map(str,b)) def units(): return ([[r*9+c for c in range(9)] for r in range(9)]+[[r*9+c for r in range(9)] for c in range(9)]+[[r*9+c for r in range(br,br+3) for c in range(bc,bc+3)] for br in [0,3,6] for bc in [0,3,6]]) UNITS=units();PEERS=[set(j for u in UNITS if i in u for j in u)-{i} for i in range(81)] def parse(text): if len(text)!=81 or any(c not in '0123456789' for c in text):return None,'malformed_input' b=list(map(int,text)) for u in UNITS: v=[b[i] for i in u if b[i]] if len(v)!=len(set(v)):return None,'inconsistent_clues' return b,None def independently_validate(board,clues): """Check completed units and original clues, separately from search candidates.""" return len(board)==81 and all(set(board[i] for i in u)==set(range(1,10)) for u in UNITS) and all(not g or board[i]==g for i,g in enumerate(clues)) def search(clues,excluded=None,node_budget=100000): b=clues.copy();nodes=0;cutoff=False;answer=None def dfs(): nonlocal nodes,cutoff,answer if nodes>=node_budget:cutoff=True;return False nodes+=1;choices=None;chosen=None for i,v in enumerate(b): if v:continue c=set(range(1,10))-{b[j] for j in PEERS[i]} if not c:return False if choices is None or len(c)