# Trois grilles representatives (0 = vide). Sources publiques.
EASY_GRID = [
[5,3,0, 0,7,0, 0,0,0],
[6,0,0, 1,9,5, 0,0,0],
[0,9,8, 0,0,0, 0,6,0],
[8,0,0, 0,6,0, 0,0,3],
[4,0,0, 8,0,3, 0,0,1],
[7,0,0, 0,2,0, 0,0,6],
[0,6,0, 0,0,0, 2,8,0],
[0,0,0, 4,1,9, 0,0,5],
[0,0,0, 0,8,0, 0,7,9],
]
MEDIUM_GRID = [
[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],
]
HARD_GRID = [
[0,0,0, 6,0,0, 4,0,0],
[7,0,0, 0,0,3, 6,0,0],
[0,0,0, 0,9,1, 0,8,0],
[0,0,0, 0,0,0, 0,0,0],
[0,5,0, 1,8,0, 0,0,3],
[0,0,0, 3,0,6, 0,4,5],
[0,4,0, 2,0,0, 0,6,0],
[9,0,3, 0,0,0, 0,0,0],
[0,2,0, 0,0,0, 1,0,0],
]
GRIDS = {
"Easy": EASY_GRID,
"Medium": MEDIUM_GRID,
"Hard": HARD_GRID,
}
# Verification rapide : toutes les grilles ont la bonne forme
for name, grid in GRIDS.items():
assert len(grid) == 9 and all(len(row) == 9 for row in grid), f"{name}: forme invalide"
n_givens = sum(1 for row in grid for v in row if v != 0)
print(f"{name:6s} : {n_givens:2d} indices donnes, {81 - n_givens:2d} cases vides")