fix examples after FEASIBLE -> OPTIMAL CP-SAT change; improve display of the sudoku problem

This commit is contained in:
Laurent Perron
2020-09-20 09:04:28 +02:00
parent d5c2f5f2a6
commit 54bda4bd42
6 changed files with 15 additions and 8 deletions

View File

@@ -85,7 +85,7 @@ def cover_rectangle(num_squares):
print('%s found in %0.2fs' % (solver.StatusName(status), solver.WallTime()))
# Prints solution.
if status == cp_model.FEASIBLE:
if status == cp_model.OPTIMAL:
display = [[' ' for _ in range(size_x)] for _ in range(size_y)]
for i in range(num_squares):
sol_x = solver.Value(x_starts[i])

View File

@@ -161,7 +161,7 @@ def solve_hidato(puzzle, index):
solver = cp_model.CpSolver()
status = solver.Solve(model)
if status == cp_model.FEASIBLE:
if status == cp_model.OPTIMAL:
if visualization.RunFromIPython():
output = visualization.SvgWrapper(10, r, 40.0)
for i, var in enumerate(positions):

View File

@@ -66,9 +66,16 @@ def solve_sudoku():
# Solve and print out the solution.
solver = cp_model.CpSolver()
status = solver.Solve(model)
if status == cp_model.FEASIBLE:
if status == cp_model.OPTIMAL:
for i in line:
print([int(solver.Value(grid[(i, j)])) for j in line])
output = ''
for j in line:
output += str(int(solver.Value(grid[(i, j)]))) + ' '
if j == 2 or j == 5:
output += '| '
print(output)
if i == 2 or i == 5:
print('------|-------|-------')
solve_sudoku()

View File

@@ -110,7 +110,7 @@ def solve_zebra():
solver = cp_model.CpSolver()
status = solver.Solve(model)
if status == cp_model.FEASIBLE:
if status == cp_model.OPTIMAL:
people = [englishman, spaniard, japanese, ukrainian, norwegian]
water_drinker = [
p for p in people if solver.Value(p) == solver.Value(water)