Atölye › Sudoku › 18/28. adım
Şimdi bilgisayara sudoku çözmeyi öğretiyoruz. İyi bir oyuncu nereden başlar? En az seçeneği olan hücreden: tek bir rakamın sığdığı hücre hemen dolar. Bilgisayar da öyle yapacak.
bestCell her boş hücre için 1'den 9'a hangi rakamların sığdığını sayar ve en az seçenekli hücreyi, seçenekleriyle
birlikte verir.
```js
// The empty cell with the fewest digits that fit, and those digits.
function bestCell(board) {
let found = null
for (let r = 0; r < 9; r++) {
for (let c = 0; c < 9; c++) {
if (board[r][c] !== 0) continue
const options = []
for (let d = 1; d <= 9; d++) if (canPlace(board, r, c, d)) options.push(d)
if (!found || options.length < found.options.length) found = { r, c, options }
}
}
return found
}
```if (board[r][c] !== 0) continue → dolu hücreleri atla.options → 1'den 9'a, canPlace ile sığan rakamların listesi.if (!found || options.length < found.options.length) → henüz aday yoksa ya da bu hücrenin seçenekleri daha
azsa, yeni aday bu.null. Çözücü bunu "çözüldü" diye anlayacak.canPlace fonksiyonunun altına bir boş satır bırakıp yorumu ve bestCell fonksiyonunu yaz. Çalıştır.
Beceriler: Döngüler, Diziler ve nesneler