Levende rutenett

Levende rutenett#

Hvordan i all verden kan noe så komplekst som liv oppstå ut fra forholdsvis enkle regler og lover fra kjemi og fysikk?

Hvorfor i all verden snakker jeg om dette i et kapittel for faget Informasjonsteknologi 2?

Alt vil bli klart, kjære leser, når vi tar et dypdykk i Conway’s Game of Life

Game of Life 🦠#

Game of Life er et sett med regler for et rutenett som ble utviklet av John Horton Conway på 70-tallet. Hver rute i rutenettet anses som en celle, og hver celle kan være enten levende eller død. Reglene er som følger:

Naboer

Oppdatering

Færre enn to levende naboer

Dør

To eller tre levende naboer

Fortsetter å leve

Flere enn tre levende naboer

Dør

Død, men med akkurat tre levende naboer

Kommer til live

Oppgave: Lag Game of Life 🦠

Lag et objektorientert Game of Life med grensesnitt i PyGame.

Bruk klassen Simulasjon for å holde styr på hele rutenettet/spillet og Celle for å holde styr på hver individuelle celle.

Du kan bestemme hvordan du håndterer kantene. En måte er ved å bestemme at alle cellene utenfor kanten er døde. En annen måte er ved å gjøre wrap-around, hvor naboene til cellene på høyre kant blir cellene på venstre kant osv…

Extra: Utvid programmet til å starte med at alle cellene er døde. Ta mouse-input fra brukeren som registrerer på hvilken celle det klikkes. Klikker man på en celle så dør den eller kommer til live.

Det er virkelig fascinerende hvordan det oppstår så mange kule «livsformer» og mønstre i så enkle regler. Jeg anbefaler å lese litt videre på Wikipedia (lenke) om du er interessert.

Simulasjoner hvor man bestemmer noen enkle regler for naboer til celler kalles for Cellular Automata på engelsk. I oppgavene under får du enda flere av disse å leke deg med.


Oppgave: Langton’s Ant 🐜

Langton’s Ant er en annen kjent Cellular Automaton.

Reglene er som følger:

  • En maur starter i et rutenett med en posisjon og en retning.

  • Hvis mauren er på en hvit rute, snur den 90 grader med klokken, bytter fargen på ruten den står på og beveger seg ett skritt frem.

  • Hvis mauren er på en sort rute, snur den 90 grader mot klokken, bytter fargen på ruten den står på og beveger seg ett skritt frem.

Lag Langton’s Ant. Du må bruke objektorientert programmering med klasser og objekter. Hvordan du håndterer kanten på rutenettet er opp til deg selv.

Utforsk: Plasser flere maur på skjermen på en gang eller utforsk andre regler for mauren.

Oppgave: Skogbrann 🌲🔥 (Eksamen Informasjonsteknologi 2 V25)

Til eksamen V25 ble denne formuleringen gitt for en simulasjon av skogbranner.

  • Ved oppstart består simuleringen av et tomt rutenett.

  • Hver celle i rutenettet kan bli et tre, og sannsynligheten for at en tom celle blir et tre, kan ved oppstart f.eks. være 0,3 %.

  • Etter som det vokser fram trær i skogen, kan et lynnedslag slå ned i et tre og starte en skogbrann. Sannsynligheten for at et tre blir truffet av lyn, kan f.eks. settes til 0,03 %.

  • Om lynet slår ned i et tre, begynner det å brenne, og skogbrannen sprer seg etter følgende regler:

    • Ved lynnedslag er det et tre som begynner å brenne.

    • Ved neste trinn i simuleringen har treet lynet slo ned i, brent opp og blitt en blank celle. Trærne som sto ved siden av treet der lynet slo ned, brenner.

    • Simuleringen fortsetter på samme vis ved at alle trær som står ved et tre som nettopp brant opp, nå brenner.

Skogen vokser ikke mens skogbrannen pågår. Det betyr at mens det pågår en brann, representerer hvert trinn i simuleringen veldig mye mindre tid enn mens skogen vokser.

Lag denne simulasjonen visuelt med PyGame. Bruk hensiktsmessig objektorientert programmering.