Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from claspy import *
- puzzle = [line.split(" ") for line in """\
- ` ` ` ` ` ` ` ` `
- ` ` ` 6 ` 1 ` ` 5
- ` 1 ` ` ` ` ` ` `
- 1 ` ` ` 2 3 ` ` `
- ` ` ` ` ` ` ` ` `
- ` ` ` 1 ` ` ` ` `
- ` ` ` ` ` ` ` 6 `
- ` ` ` 3 ` 5 ` ` `
- ` ` ` ` ` ` ` ` `""".split("\n")]
- thermometers = [
- [(3,1),(3,0),(2,0),(1,0)],
- [(5,1),(5,0),(6,0),(7,0)],
- [(8,1),(8,2),(8,3)],
- [(1,2),(1,3),(2,3),(3,3)],
- [(0,3),(0,2),(0,1)],
- [(4,3),(4,4),(4,5)],
- [(5,3),(6,3),(7,3),(8,3)],
- [(3,5),(2,5),(1,5),(1,6)],
- [(7,6),(7,5),(6,5),(5,5)],
- [(3,7),(3,8),(2,8),(1,8)],
- [(5,7),(5,8),(6,8),(7,8)]
- ]
- sudoku = [[IntVar(1,9) for j in range(9)] for i in range(9)]
- for i in range(9):
- require_all_diff(sudoku[i])
- require_all_diff([sudoku[j][i] for j in range(9)])
- require_all_diff([sudoku[j/3+i/3*3][j%3+i%3*3] for j in range(9)])
- for t in thermometers:
- for i in range(len(t)-1):
- require(sudoku[t[i][1]][t[i][0]] < sudoku[t[i+1][1]][t[i+1][0]])
- for i in range(9):
- for j in range(9):
- if puzzle[i][j] != '`':
- require(sudoku[i][j] == int(puzzle[i][j]))
- solve()
- for i in range(9):
- for j in range(9):
- print sudoku[i][j],
- print
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement