Untitled

 avatar
unknown
python
4 months ago
1.3 kB
5
Indexable
def validator(T):
    # Validate rows and columns
    for i in range(9):
        sum_row = 0
        sum_col = 0
        for j in range(9):
            sum_row += T[i][j]
            sum_col += T[j][i]
        if sum_row != 45 or sum_col != 45:
            return False

    for box_row in range(0, 9, 3):
        for box_col in range(0, 9, 3):
            sum_box = 0
            for i in range(box_row, box_row + 3)
                for j in range(box_col, box_col + 3):
                    sum_box += T[i][j]
            if sum_box != 45:
                return False
    return True

def valid_numbers(T, i):
    avalible = [True for i in range(10)]
    avalible[0] = False
    for j in range(9):
        if T[i][j] != 0:
            avalible[T[i][j]] = False
    moves = []
    for i in range(10):
        if avalible[i]:
            moves.append(i)
    return moves

def sudoku_gen(T, i=0, j=0):
    if i == 8 and j == 8:
        if validator(T):
            print(T)
        else:
            return
    if j == 9:
        i +=1
        j = 0
    if T[i][j] == 0:
        numbers = valid_numbers(T, i)
        for num in numbers:
            T[i][j] = num
            sudoku_gen(T, i, j+1)
            T[i][j] = 0
    else:
        sudoku_gen(T,i, j+1)
sudoku_gen(T)
Editor is loading...
Leave a Comment