# -*- encoding:utf8 -*-

# Solveur de sudoku par backtracking

# Gestion de l'affichage

def stringToGrid(string):
    """
    stringToGrid(str string) --> list
    Transforme la chaine <string> de 81 caractères en une grille 9x9
    """

    # A compléter


def display(grid):
    """
    affichage(list grille) --> none
    Affichage de la grille de manière conventionnelle
    """

    # A compléter

# Tests de la validité d'une entrée

def validOnLine(grid, elt, i):
    """
    validOnLine(list grid, str elt, int i) --> bool
    Retourne TRUE si le caractère <elt> est absent de la ligne <i> de la grille <grid>
    """

    # A compléter


def validOnColumn(grid, elt, j):
    """
    validOnColumn(list grid, str elt, int j) --> bool
    Retourne TRUE si le caractère <elt> est absent de la ligne <j> de la grille <grid>
    """

    # A compléter

def validOnBlock(grid, elt, i, j):
    """
    validOnBlock(list grid, str elt, int i, int j) --> bool
    Retourne TRUE si le caractère <elt> est absent du bloc contenant la cellule située à la ligne <i> et à la colonne <j>
    """

    # A compléter


def solver(grid, position=0):
    """
    solver(list grid, int position) --> bool
    Résout la grille <grid> par backtracking de manière récursive
    """

    # A compléter


### Programme principal ####

if __name__ == "__main__":

    monSudoku = input("Entrez le sudoku par ligne (une case vide est représentée par le caractère '.'):\n")
    while stringToGrid(monSudoku) == -1:
        monSudoku = input("Entrez le sudoku par ligne (une case vide est representée par le caractère '.'):\n")
    grille = stringToGrid(monSudoku)
    print("Grille initiale:\n")
    display(grille)
    print("\nRésolution en progrès...\n")
    solver(grille)
    print("Grille finale:\n")
    display(grille)
