Atölye › Sudoku › 12/28. adım
Sudoku'nun kalbindeki soru: bu rakam buraya konabilir mi? Satırında, sütununda ya da 3 × 3 kutusunda aynı rakam
varsa konamaz. canPlace bu soruyu yanıtlıyor; üç kuralı tek bir 9'luk döngüde birlikte kontrol ediyor.
Bu fonksiyonu hem hataları göstermek hem de ileride bilgisayarın bulmacayı çözmesi için kullanacağız.
```js
// Can digit d go at (r, c)? Not if it is already in the row, the column or the 3 by 3 box.
function canPlace(board, r, c, d) {
const br = r - (r % 3)
const bc = c - (c % 3)
for (let i = 0; i < 9; i++) {
if (board[r][i] === d || board[i][c] === d) return false
if (board[br + Math.floor(i / 3)][bc + (i % 3)] === d) return false
}
return true
}
```board → hangi ızgaraya bakılacağı (ileride çözücü kendi kopyasını verecek).const br = r - (r % 3) → hücrenin kutusunun ilk satırı: 0, 3 ya da 6 (ör. 7 → 7 - 1 = 6). bc aynı, sütun için.for (let i = 0; i < 9; i++) → tek döngüde üç kontrol:board[r][i] → satırın i. hücresi.board[i][c] → sütunun i. hücresi.board[br + Math.floor(i / 3)][bc + (i % 3)] → kutunun i. hücresi: i 0–8, kutu içinde satır Math.floor(i / 3)
(0–2), sütun i % 3 (0–2).d bulunursa hemen return false: konamaz. Döngü biterse return true.let selected satırının altına bir boş satır bırakıp yorumu ve canPlace fonksiyonunu yaz. Çalıştır.
Beceriler: Fonksiyonlar, Döngüler