Du teller cella selv med blant naboene

Handler om: Rutenett (2D-liste)

Når du går gjennom 3 × 3-ruta rundt en celle, er cella selv midt i ruta. Glemmer du å hoppe over den, teller en levende celle seg selv som nabo, og alle tallene blir én for høye for levende celler.

Eksempel

En levende celle med to levende naboer får telling 3 og overlever av feil grunn — eller dør når den skulle levd.

Slik tenker du riktig om det

Tegn 3 × 3-ruta og kryss ut midten før du teller: en nabo er en ANNEN celle. Test alltid én levende celle helt alene — den skal ha 0 naboer.

Slik ser det ut i kode

Slik gikk det galt

for dr in (-1, 0, 1):
    for dk in (-1, 0, 1):
        if celler[rad + dr][kol + dk]:
            n += 1

Slik fikser du det

for dr in (-1, 0, 1):
    for dk in (-1, 0, 1):
        if dr == 0 and dk == 0:
            continue
        if celler[rad + dr][kol + dk]:
            n += 1

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala