Sudoku

Write a program in Python that, using the optilog library, solves a given sudoku.

In order to use the optilog library, the program has to include something like:

from optilog.solvers.sat import *
...
solver = Glucose41()
solver.add_clauses(...)
solver.solve()
solver.model()

Input

The input is a text (in the stdin) with numbers (between 1 and 9) in some cells, and dots "." in the empty cells. For instance, the text:

53..7....
6..195...
.98....6.
8...6...3
4..8.3..1
7...2...6
.6....28.
...419..5
....8..79

Output

The output is also a text (in the stdout) only with numbers between 1 and 9 that represents the solution. In this example:

534678912
672195348
198342567
859761423
426853791
713924856
961537284
287419635
345286179

If the problem has no solution, the output must be the sentence: NO SOLUTION

If the problem has multiple solutions, the output must be the sentence: MULTIPLE SOLUTIONS

Scoring

If your program is able to solve correctly sudokus with just one solution, the score will be 5. If additionally, you detect unsolvable problems, you will get 2 additional points, and 3 more if you can detect problems with multiple solutions.

Problem information

Author: Jordi Levy

Generation: 2026-01-25T12:04:58.840Z

© Jutge.org, 2006–2026.
https://jutge.org