Advertisement
Guest User

Untitled

a guest
Aug 17th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. from claspy import *
  2.  
  3. puzzle = [line.split(" ") for line in """\
  4. ` ` ` ` ` ` ` ` `
  5. ` ` ` 6 ` 1 ` ` 5
  6. ` 1 ` ` ` ` ` ` `
  7. 1 ` ` ` 2 3 ` ` `
  8. ` ` ` ` ` ` ` ` `
  9. ` ` ` 1 ` ` ` ` `
  10. ` ` ` ` ` ` ` 6 `
  11. ` ` ` 3 ` 5 ` ` `
  12. ` ` ` ` ` ` ` ` `""".split("\n")]
  13. thermometers = [
  14. [(3,1),(3,0),(2,0),(1,0)],
  15. [(5,1),(5,0),(6,0),(7,0)],
  16. [(8,1),(8,2),(8,3)],
  17. [(1,2),(1,3),(2,3),(3,3)],
  18. [(0,3),(0,2),(0,1)],
  19. [(4,3),(4,4),(4,5)],
  20. [(5,3),(6,3),(7,3),(8,3)],
  21. [(3,5),(2,5),(1,5),(1,6)],
  22. [(7,6),(7,5),(6,5),(5,5)],
  23. [(3,7),(3,8),(2,8),(1,8)],
  24. [(5,7),(5,8),(6,8),(7,8)]
  25. ]
  26.  
  27. sudoku = [[IntVar(1,9) for j in range(9)] for i in range(9)]
  28. for i in range(9):
  29. require_all_diff(sudoku[i])
  30. require_all_diff([sudoku[j][i] for j in range(9)])
  31. require_all_diff([sudoku[j/3+i/3*3][j%3+i%3*3] for j in range(9)])
  32. for t in thermometers:
  33. for i in range(len(t)-1):
  34. require(sudoku[t[i][1]][t[i][0]] < sudoku[t[i+1][1]][t[i+1][0]])
  35. for i in range(9):
  36. for j in range(9):
  37. if puzzle[i][j] != '`':
  38. require(sudoku[i][j] == int(puzzle[i][j]))
  39. solve()
  40. for i in range(9):
  41. for j in range(9):
  42. print sudoku[i][j],
  43. print
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement