Guest User

Untitled

a guest
Dec 12th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. """
  2. Scamming the coding interview
  3. """
  4.  
  5.  
  6. def is_valid(sudoku_grid, i, j):
  7.  
  8. is_board_valid = check_the_grid(sudoku_grid, i, j) and \
  9. check_row(sudoku_grid, i, j) and \
  10. check_col(sudoku_grid, i, j)
  11.  
  12. return is_board_valid
  13.  
  14.  
  15. def check_the_grid(sudoku_grid, i, j):
  16.  
  17. offset_x = int(i/3) * 3
  18. offset_y = int(j/3) * 3
  19.  
  20. num = sudoku_grid[i][j]
  21.  
  22. for row in range(offset_x, offset_x+3):
  23. for col in range(offset_y, offset_y+3):
  24.  
  25. cell_value = sudoku_grid[row][col]
  26.  
  27. if cell_value == num and not (i == row and j == col):
  28. return False
  29. return True
  30.  
  31.  
  32. def check_row(sudoku_grid, i, j):
  33.  
  34. num = sudoku_grid[i][j]
  35.  
  36. for row in range(0, 9):
  37.  
  38. if sudoku_grid[row][j] == num and not (row == i):
  39. return False
  40.  
  41. return True
  42.  
  43.  
  44. def check_col(sudoku_grid, i, j):
  45. num = sudoku_grid[i][j]
  46.  
  47. for col in range(0, 9):
  48.  
  49. if sudoku_grid[i][col] == num and not (col == j):
  50. return False
  51.  
  52. return True
  53.  
  54.  
  55. def sudoku_helper(sudoku_grid):
  56.  
  57. status = True
  58.  
  59. for i in range(0, 9):
  60. for j in range(0, 9):
  61.  
  62. cell = sudoku_grid[i][j]
  63.  
  64. if cell == 0:
  65.  
  66. # this cell is not yet assigned
  67. # Try assigning it all the numbers and try if it leads to a valid configuration
  68.  
  69. status = False
  70.  
  71. for num in range(1, 10):
  72.  
  73. sudoku_grid[i][j] = num
  74.  
  75. if is_valid(sudoku_grid, i, j):
  76. status = sudoku_helper(sudoku_grid)
  77. if status:
  78. break
  79. else:
  80. status = False
  81.  
  82. if not status:
  83. sudoku_grid[i][j] = 0
  84. return False
  85.  
  86. return status
  87.  
  88.  
  89. if __name__ == '__main__':
  90.  
  91. sg = [
  92. [3, 0, 6, 5, 0, 8, 4, 0, 0],
  93. [5, 2, 0, 0, 0, 0, 0, 0, 0],
  94. [0, 8, 7, 0, 0, 0, 0, 3, 1],
  95. [0, 0, 3, 0, 1, 0, 0, 8, 0],
  96. [9, 0, 0, 8, 6, 3, 0, 0, 5],
  97. [0, 5, 0, 0, 9, 0, 6, 0, 0],
  98. [1, 3, 0, 0, 0, 0, 2, 5, 0],
  99. [0, 0, 0, 0, 0, 0, 0, 7, 4],
  100. [0, 0, 5, 2, 0, 6, 3, 0, 0]
  101. ]
  102.  
  103. sudoku_helper(sg)
  104.  
  105. print(sg)
Add Comment
Please, Sign In to add comment