Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. def sudoku_to_string(sudoku):
  2. s = " "
  3. x = ""
  4. for row in sudoku:
  5. x += s.join(str(item) for item in row) + "\n"
  6. x = x.replace("0", ".")
  7. x = x.strip()
  8. return x
  9.  
  10.  
  11. def is_in_row(sudoku, i):
  12. l = [0,1,2,3,4,5,6,7,8,9]
  13. x = [item for item in l if item not in sudoku[i]]
  14.  
  15. m = []
  16. for i in range(0,10):
  17. m.append(i not in x)
  18. return m
  19.  
  20.  
  21.  
  22.  
  23. def is_in_column(sudoku, j):
  24. pass
  25. l = [0,1,2,3,4,5,6,7,8,9]
  26. x=[]
  27. xx = []
  28. xxx = []
  29.  
  30. for i in range(len(sudoku)):
  31. x.append(sudoku[i][j])
  32.  
  33. xx = [item for item in l if item not in x]
  34.  
  35. for i in range(0,10):
  36. xxx.append(i not in xx)
  37. return xxx
  38.  
  39.  
  40. def square_indices(i, j):
  41. x = 1
  42. b = j
  43. j_count = 0
  44. while x == 1:
  45. if j % 3 != 0:
  46. j -= 1
  47. j_count += 1
  48. if j % 3 == 0:
  49. x = 0
  50. x = 1
  51. z = i
  52. i_count = 0
  53. while x == 1:
  54. if i % 3 != 0:
  55. i -= 1
  56. i_count += 1
  57. if i % 3 == 0:
  58. x = 0
  59.  
  60. indices = []
  61. cnt = 0
  62. for k in range(0,3):
  63. indices.append((i+cnt, j))
  64. i += cnt
  65. cnt = 1
  66. for n in range(1,3):
  67. indices.append((i, j+n))
  68. return indices
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75. def is_in_square_from_indices(sudoku, indices):
  76. square_nums = []
  77. for i in indices:
  78. square_nums.append(sudoku[i[0]][i[1]])
  79.  
  80. l = [0,1,2,3,4,5,6,7,8,9]
  81.  
  82. num_list = [i for i in l if i not in square_nums]
  83.  
  84. bool_list = []
  85.  
  86. for i in range(0,10):
  87. bool_list.append(i not in num_list)
  88.  
  89.  
  90. return bool_list
  91. # bool_list = []
  92. # for i in range(0,10):
  93.  
  94. def next_entries(sudoku, i, j):
  95. row = is_in_row(sudoku, i)
  96. col = is_in_column(sudoku,j)
  97. sq = is_in_square(sudoku, i, j)
  98.  
  99. l = []
  100.  
  101. for i in range(0,10):
  102. if row[i] == False and sq[i] == False and col[i] == False:
  103. l.append(i)
  104. return l
  105.  
  106.  
  107. def is_in_square(sudoku, i, j):
  108. return is_in_square_from_indices(sudoku, square_indices(i, j))
  109.  
  110. def find_all_next_entries(sudoku):
  111. counter = 0
  112. for item in sudoku:
  113. for i in item:
  114. if i == 0:
  115. print(next_entries(sudoku, sudoku.index(item), item.index(i)))
  116.  
  117. # loc = item.index(0,counter)
  118. # # print(loc)
  119. # # print(item)
  120. # cnt = 0
  121. # cnt2=0
  122. # print(next_entries(sudoku, loc,loc))
  123. # counter += 1
  124. # print(item)
  125. # # for k in range(len(item)):
  126. # # cnt +=1
  127. # # for c in range(len(item)):
  128. # # print(next_entries(sudoku, k, c))
  129.  
  130.  
  131. if __name__ == '__main__':
  132. sudoku = [[0, 5, 1, 2, 0, 0, 0, 9, 0],
  133. [0, 3, 8, 0, 7, 9, 0, 4, 0],
  134. [2, 9, 0, 5, 0, 0, 0, 0, 6],
  135. [1, 2, 3, 6, 0, 0, 7, 0, 0],
  136. [8, 7, 0, 3, 0, 1, 0, 5, 4],
  137. [0, 0, 9, 0, 0, 8, 3, 6, 1],
  138. [4, 0, 0, 0, 0, 2, 0, 1, 5],
  139. [0, 1, 0, 8, 6, 0, 4, 3, 0],
  140. [0, 6, 0, 0, 0, 7, 9, 2, 0]]
  141. print(find_all_next_entries(sudoku))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement