def solve(
    grid, index, total
):  # Função para resolver o sudoku proposto, com a implementação do algoritmo de AC-3

    inicio = time.time()

    sudoku = Sudoku(grid)

    print("\n       Sudoku       \n")
    print("{}".format(sudoku.__str1__(grid)))

    print("\nAC3 iniciou")

    AC3_result = AC3(sudoku)

    if not AC3_result:
        print("\nEste Sudoku não tem solução")

    else:

        if sudoku.terminou():

            print(
                "\n\033[32mAC3 é suficiente para resolver o Sudoku!\033[0;0m")
            print("\nSolução: \n\n{}".format(sudoku.__str2__()))
            for cel in sudoku.celulas:
                val = sudoku.possibilidades[cel]
                value.append(val[0])

            fim = time.time()
            timeExec = round((fim - inicio), 3)
            print("Tempo de Execução: " + str(timeExec) + " s")
            return str(timeExec)
        else:
            print("\033[33mEste Sudoku não tem resultado com o AC3\033[0;0m")