Menu
CoddyTech

Valid Sudoku

ŚrednieHaszowaniepython iconjava iconcpp iconc iconjs icon+10

Otrzymujesz planszę Sudoku 9 × 9 jako board, listę 9 ciągów znaków, każdy o długości 9 znaków, po jednym ciągu na wiersz. Każdy znak to cyfra od 1 do 9 albo . oznaczająca puste pole. Zwróć true, jeśli żadna cyfra nie występuje dwukrotnie w tym samym wierszu, tej samej kolumnie ani w tym samym polu 3 × 3, a w przeciwnym razie false. Sprawdzane są tylko wypełnione pola: plansza nie musi mieć rozwiązania.

Funkcja

isValidSudoku(board: string-array) → boolean
boardstring-array
9 ciągów po 9 znaków, po jednym w każdym wierszu, cyfry od 1 do 9 i . oznaczająca pustą komórkę
Zwracaboolean
true, jeśli żaden wiersz, kolumna ani kwadrat 3 × 3 nie zawiera powtórzonej cyfry; w przeciwnym razie false

Ograniczenia

  • board.length == 9 oraz board[i].length == 9
  • board[i][j] to cyfra od 1 do 9 lub .
  • Ukończenie planszy może być niemożliwe; liczą się tylko powtórzenia wśród wypełnionych pól.

Przykłady

Wejście
board = [".19......", "..89...3.", ".3.8.....", ".5..6....", ".74..89.3", "....7....", ".2.5..19.", "1....3...", ".8......7"]
Wyjście
true
Wyjaśnienie
Każdy wiersz, każda kolumna i każde pole zawiera każdą cyfrę najwyżej raz. Wiersz 4 (licząc od 0), .74..89.3, zawiera po jednym wystąpieniu cyfr 7, 4, 8, 9 i 3. To samo dotyczy pozostałych 26 grup, więc odpowiedź to true.

lock icon+16 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Uogólnij sprawdzanie dla planszy 16 × 16 z kwadratami 4 × 4 i symbolami od 1 do 9 oraz od A do G. Które liczby w Twoim kodzie zależą od rozmiaru planszy i jak będzie wyglądał wzór na kwadrat?

Zresetuj kod
def isValidSudoku(board):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

true