Menu
CoddyTech

Sudoku Solver

DifficileBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Una griglia di sudoku è una griglia 9 × 9 divisa in nove riquadri 3 × 3. In una griglia risolta, ogni riga, ogni colonna e ogni riquadro contiene ciascuna cifra da 1 a 9 esattamente una volta.

Il puzzle è fornito come 9 stringhe, una per ogni riga dall’alto; un . indica una cella vuota. Riempi tutte le celle vuote e restituisci la griglia risolta nella stessa forma. La griglia ha esattamente una soluzione.

Funzione

solveSudoku(board: string-array) → string-array
boardstring-array
le 9 righe del puzzle, un punto in ogni cella vuota
Restituiscestring-array
le 9 righe della griglia risolta

Vincoli

  • board contiene 9 stringhe di lunghezza 9.
  • Ogni carattere è . oppure una delle cifre da 1 a 9.
  • Le cifre date non si ripetono mai all'interno di una riga, di una colonna o di un riquadro.
  • La scacchiera ha esattamente una soluzione.

Esempi

Input
board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]
Output
["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]
Spiegazione
La riga superiore 9.7.....6 contiene già 9, 7 e 6, quindi le sue sei celle vuote prendono 1, 2, 3, 4, 5 e 8. Le colonne e i riquadri determinano dove va ciascuno, e la riga diventa 957214386.
challenge icon

Per approfondire

In un killer sudoku, anche le gabbie di celle devono dare come somma i valori indicati. Come aggiungeresti questa regola alla ricerca e la useresti per potare i rami in anticipo?

Ripristina il codice
def solveSudoku(board):
    # Scrivi il codice qui

Test #1

Argomento

board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]

Output atteso

["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]