Atölye › 15 Bulmacası › 12/27. adım

Komşular

Ne yapıyoruz

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
}
```

Ne işe yarıyor

Sıra sende

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

Tüm adımlar

  1. Tek listede bir tahta
  2. Tuval ve kalem
  3. Masayı boya
  4. Çizen bir fonksiyon
  5. Satır ve sütun
  6. Her kare nerede
  7. Bir taş çiz
  8. Taşın üstündeki sayı
  9. Bütün taşlar
  10. Tekrar tekrar çiz
  11. N'den çözülmüş tahta
  12. Komşular
  13. Taş kaydır
  14. Taşa tıkla
  15. Ok tuşları
  16. Hamleleri say
  17. Gerçek kaydırmalarla karıştır
  18. Hangi tahtalar çözülür?
  19. Çözüldü mü?
  20. Kaymayı hatırla
  21. Kareleri say
  22. Akıcı kayma
  23. Çözüldü!
  24. Kazandığını göster
  25. Yeniden oyna
  26. Kırılacak bir rekor
  27. Kendin yap: bir süre sayacı