Menu
CoddyTech

Valid Sudoku

MittelHashingpython iconjava iconcpp iconc iconjs icon+10

Du erhältst ein 9 × 9-Sudoku-Brett als board, eine Liste aus 9 Zeichenfolgen mit jeweils 9 Zeichen, eine Zeichenfolge pro Zeile. Jedes Zeichen ist eine Ziffer von 1 bis 9 oder . für ein leeres Feld. Gib true zurück, wenn keine Ziffer in derselben Zeile, derselben Spalte oder demselben 3 × 3-Block zweimal vorkommt, und andernfalls false. Es werden nur die ausgefüllten Felder überprüft: Das Brett muss nicht lösbar sein.

Funktion

isValidSudoku(board: string-array) → boolean
boardstring-array
9 Zeichenfolgen mit je 9 Zeichen, eine pro Zeile, Ziffern von 1 bis 9 und . für ein leeres Feld
Gibt zurückboolean
wahr, wenn sich in keiner Zeile, Spalte oder keinem 3 × 3-Feld eine Ziffer wiederholt, andernfalls falsch

Einschränkungen

  • board.length == 9 und board[i].length == 9
  • board[i][j] ist eine Ziffer von 1 bis 9 oder .
  • Das Brett lässt sich möglicherweise nicht vervollständigen; relevant sind nur Wiederholungen unter den ausgefüllten Zellen.

Beispiele

Eingabe
board = [".19......", "..89...3.", ".3.8.....", ".5..6....", ".74..89.3", "....7....", ".2.5..19.", "1....3...", ".8......7"]
Ausgabe
true
Erklärung
Jede Zeile, jede Spalte und jeder Block enthält jede Ziffer höchstens einmal. Zeile 4 (ab 0 gezählt), .74..89.3, enthält die Ziffern 7, 4, 8, 9 und 3 jeweils einmal, und dasselbe gilt für die anderen 26 Gruppen. Daher lautet die Antwort true.

lock icon+16 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Verallgemeinere die Prüfung auf ein 16 × 16-Brett mit 4 × 4-Blöcken und den Symbolen 1 bis 9 und A bis G. Welche Zahlen in deinem Code hängen von der Brettgröße ab, und wie lautet die Formel für die Blöcke?

Code zurücksetzen
def isValidSudoku(board):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

board = [".19......", "..89...3.", ".3.8.....", ".5..6....", ".74..89.3", "....7....", ".2.5..19.", "1....3...", ".8......7"]

Erwartet

true