Atölye › 15 Bulmacası › 12/27. adım
Sadece boşluğun yanındaki taş hareket edebilir. O hâlde asıl soru: i karesinin komşuları hangileri?
Düz listede: üstteki i - N, alttaki i + N, soldaki i - 1, sağdaki i + 1. Ama kenarlara dikkat: 3 numaralı
kare ilk satırın sonunda; 3 + 1 = 4 ise bir alt satırın başı, komşu değil. Bu çok bilinen bir hatadır. Her
komşuyu eklemeden önce satırı ve sütunu kontrol ederek ondan kaçınırız.
```js
// The squares next to position i (up, down, left, right), staying inside the board.
function neighbors(i) {
const list = []
if (rowOf(i) > 0) list.push(i - N)
if (rowOf(i) < N - 1) list.push(i + N)
if (colOf(i) > 0) list.push(i - 1)
if (colOf(i) < N - 1) list.push(i + 1)
return list
}
```const list = [] → boş bir liste; komşuları buraya toplayacağız.if (rowOf(i) > 0) list.push(i - N) → en üst satırda değilse üst komşuyu ekle. > "büyük", .push(...)
listenin sonuna ekler.if (rowOf(i) < N - 1) list.push(i + N) → en alt satırda (3) değilse alt komşu. < "küçük".if (colOf(i) > 0) list.push(i - 1) → ilk sütunda değilse sol komşu.if (colOf(i) < N - 1) list.push(i + 1) → son sütunda değilse sağ komşu. 3 numaralı kare için bu yüzden 4 eklenmez.return list → listeyi geri verir. Köşedeki karenin 2, kenardakinin 3, ortadakinin 4 komşusu olur.solvedTiles satırının altına bir boş satır bırakıp yorum satırını ve neighbors fonksiyonunu yaz. Çalıştır.
Ekran değişmez; kontroller komşuları deniyor.
Beceriler: Diziler ve nesneler
← N'den çözülmüş tahta Taş kaydır →