# EXERCICE : Verifier l'unicite de la solution avec OR-Tools
#
# Indications :
# - Resoudre une premiere fois
# - Ajouter une contrainte interdisant cette solution
# - Tenter de resoudre a nouveau
def has_unique_solution(grid):
"""Verifie si un Sudoku a exactement une solution.
Args:
grid: liste 9x9 (0 = case vide)
Returns:
True si exactement 1 solution, False sinon
"""
# TODO etudiant : implementez la verification d'unicite
print("Exercice a completer : has_unique_solution")
return None # TODO etudiant
# Test
try:
from ortools.sat.python import cp_model
ORTTOOLS_AVAILABLE = True
print("OR-Tools disponible pour le test.")
except ImportError:
ORTTOOLS_AVAILABLE = False
print("OR-Tools non disponible - test skippe.")
if ORTTOOLS_AVAILABLE:
# Puzzle facile (solution unique normalement)
easy = [0,0,0,2,6,0,7,0,1,6,8,0,0,7,0,0,9,0,
1,9,0,0,0,4,5,0,0,8,2,0,1,0,0,0,4,0,
0,0,4,6,0,2,9,0,0,0,5,0,0,0,3,0,2,8,
0,0,9,3,0,0,0,7,4,0,4,0,0,5,0,0,3,6,
7,0,3,0,1,8,0,0,0]
grid_9x9 = [easy[i*9:(i+1)*9] for i in range(9)]
unique = has_unique_solution(grid_9x9)
print(f"Solution unique : {unique}")