Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def sudoku_to_string(sudoku):
- s = " "
- x = ""
- for row in sudoku:
- x += s.join(str(item) for item in row) + "\n"
- x = x.replace("0", ".")
- x = x.strip()
- return x
- def is_in_row(sudoku, i):
- l = [0,1,2,3,4,5,6,7,8,9]
- x = [item for item in l if item not in sudoku[i]]
- m = []
- for i in range(0,10):
- m.append(i not in x)
- return m
- def is_in_column(sudoku, j):
- pass
- l = [0,1,2,3,4,5,6,7,8,9]
- x=[]
- xx = []
- xxx = []
- for i in range(len(sudoku)):
- x.append(sudoku[i][j])
- xx = [item for item in l if item not in x]
- for i in range(0,10):
- xxx.append(i not in xx)
- return xxx
- def square_indices(i, j):
- x = 1
- b = j
- j_count = 0
- while x == 1:
- if j % 3 != 0:
- j -= 1
- j_count += 1
- if j % 3 == 0:
- x = 0
- x = 1
- z = i
- i_count = 0
- while x == 1:
- if i % 3 != 0:
- i -= 1
- i_count += 1
- if i % 3 == 0:
- x = 0
- indices = []
- cnt = 0
- for k in range(0,3):
- indices.append((i+cnt, j))
- i += cnt
- cnt = 1
- for n in range(1,3):
- indices.append((i, j+n))
- return indices
- def is_in_square_from_indices(sudoku, indices):
- square_nums = []
- for i in indices:
- square_nums.append(sudoku[i[0]][i[1]])
- l = [0,1,2,3,4,5,6,7,8,9]
- num_list = [i for i in l if i not in square_nums]
- bool_list = []
- for i in range(0,10):
- bool_list.append(i not in num_list)
- return bool_list
- # bool_list = []
- # for i in range(0,10):
- def next_entries(sudoku, i, j):
- row = is_in_row(sudoku, i)
- col = is_in_column(sudoku,j)
- sq = is_in_square(sudoku, i, j)
- l = []
- for i in range(0,10):
- if row[i] == False and sq[i] == False and col[i] == False:
- l.append(i)
- return l
- def is_in_square(sudoku, i, j):
- return is_in_square_from_indices(sudoku, square_indices(i, j))
- def find_all_next_entries(sudoku):
- counter = 0
- for item in sudoku:
- for i in item:
- if i == 0:
- print(next_entries(sudoku, sudoku.index(item), item.index(i)))
- # loc = item.index(0,counter)
- # # print(loc)
- # # print(item)
- # cnt = 0
- # cnt2=0
- # print(next_entries(sudoku, loc,loc))
- # counter += 1
- # print(item)
- # # for k in range(len(item)):
- # # cnt +=1
- # # for c in range(len(item)):
- # # print(next_entries(sudoku, k, c))
- if __name__ == '__main__':
- sudoku = [[0, 5, 1, 2, 0, 0, 0, 9, 0],
- [0, 3, 8, 0, 7, 9, 0, 4, 0],
- [2, 9, 0, 5, 0, 0, 0, 0, 6],
- [1, 2, 3, 6, 0, 0, 7, 0, 0],
- [8, 7, 0, 3, 0, 1, 0, 5, 4],
- [0, 0, 9, 0, 0, 8, 3, 6, 1],
- [4, 0, 0, 0, 0, 2, 0, 1, 5],
- [0, 1, 0, 8, 6, 0, 4, 3, 0],
- [0, 6, 0, 0, 0, 7, 9, 2, 0]]
- print(find_all_next_entries(sudoku))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement