İçeriğe atla
CodeItRaw
Graflar

Ders 2/4

Grafta döngü olabildiği için, gezerken nerelere gittiğini hatırlamazsan aynı iki düğüm arasında sonsuza kadar gidip gelirsin. Çözüm bir görülenler kümesidir: bir düğümü yalnızca daha önce görmediysen sıraya alırsın.

def reachable(grid, r, c, seen):
if not (0 <= r < len(grid) and 0 <= c < len(grid[0])):
return
if grid[r][c] == "#" or (r, c) in seen:
return
seen.add((r, c))
for dr, dc in ((1, 0), (-1, 0), (0, 1), (0, -1)):
reachable(grid, r + dr, c + dc, seen)
Izgarada aynı gezinti özyinelemeyle: önce "ızgaranın içinde miyim", sonra "duvar mı, daha önce geldim mi"; ikisi de değilse hücreyi işaretle ve dört komşuya git. Dört yönü bir listede tutmak dört ayrı satır yazmaktan hem kısa hem güvenlidir.

"A'dan B'ye yol var mı?" sorusu bu gezintinin kendisidir: A'dan başla, gezinti bittiğinde B görülenlerin içindeyse yol vardır. Işınlanma pedi gibi fazladan bağlantılar yalnızca komşu listesine bir kenar daha ekler; gezinti aynı kalır.

Görevler

Görevler sırayla açılır. Hepsini çözünce sonraki ders açılır.

Bu dersin görevleri, önceki dersler bitince açılır. Anlatımı şimdiden okuyabilirsin.

  1. 01

    Geçit Var mı?

    Fonksiyon

  2. 02

    Ulaşılabilir Düğümler

    Kod Okuma · Hatayı Bul

  3. 03

    Işın Ağı

    Sızma

Sırayı beklemeden çözmek istersen bütün problemler kilitsiz açık: Problemler listesi