fix examples after FEASIBLE -> OPTIMAL CP-SAT change; improve display of the sudoku problem
This commit is contained in:
@@ -185,7 +185,7 @@ void CostasBool(const int dim) {
|
||||
}
|
||||
const CpSolverResponse response = SolveCpModel(cp_model.Build(), &model);
|
||||
|
||||
if (response.status() == CpSolverStatus::FEASIBLE) {
|
||||
if (response.status() == CpSolverStatus::OPTIMAL) {
|
||||
std::vector<int64> costas_matrix;
|
||||
std::string output;
|
||||
|
||||
|
||||
@@ -74,8 +74,8 @@ void MagicSquare(int size) {
|
||||
|
||||
const CpSolverResponse response = SolveCpModel(builder.Build(), &model);
|
||||
|
||||
if (response.status() == CpSolverStatus::FEASIBLE) {
|
||||
for (int n = 0; n < size; ++n) {
|
||||
if (response.status() == CpSolverStatus::OPTIMAL) {
|
||||
for (int n = 0; n < size; ++n) {
|
||||
std::string output;
|
||||
for (int m = 0; m < size; ++m) {
|
||||
absl::StrAppendFormat(&output, "%3d ",
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user