Vi ser på noen konkruransebaner fra i fjor

....

Tidligere eksamensoppgave

a) Skriv en funksjon som tar en liste av tall som parameter. Funksjonen skal returnere -1 hvis ikke alle tallene i listen er like. Hvis alle tallene i listen er like, skal funksjonen returnere det tallet listen består av.

b) Dersom du kaller funksjonen fra a) med en ikke-tom liste av tall og får -1 tilbake, kan du da være sikker på ikke alle tallene i listen du sendte inn var like? Begrunn svaret.

Lenkede objekter

class Node:
    def __init__(self, verdi):
        self._verdi = verdi
        self._neste = None

    def sett_neste(self, neste):
        self._neste = neste
        
    def hent_neste(self):
        return self._neste
        
    def __str__(self):
        return self._verdi


a = Node("Hei")
a.sett_neste(Node("på"))
a.hent_neste().sett_neste(Node("deg"))

node = a
while node is not None:
    print(node)
    print(type(node))
    node = node.hent_neste()

Hva printes over?

Hva hvis vi legger til denne linjen før while-løkken?

a.hent_neste().hent_neste().sett_neste(a)

Kort stikk-prøve på referanser

def oek_tall_med_en(tall):
    tall += 1
    
tall = 4
oek_tall_med_en(tall)
print(tall)

Litt om obligen

Vi går gjennom:

Vanskelig oppgave på nøstede lister

a) Skriv en funksjon som tar to parametere (x, y) og som lage en liste med lengde x som for hvert element har en liste med lengde y der hvert element er 0. Denne nøstede listen skal representere et 2-dimensjonalt spillbrett.

b) Lag en funksjon fyll_brett som tar en liste av typen laget i oppgave 1 som parameter, og som endrer verdien i hver “rute” til 1 med en viss sannsynlighet (f. eks 50% for at en rute skal bli 1).

c) Lag en funksjon tell_naboer som tar en koordinat (x, y) og som returnerer antallet naboer med verdi 1 til den ruten på brettet. Naboer er alle ruter over, til siden eller skrått opp/ned.

d) Lag en test til tell_naboer (lag f. eks et brett med størrelse 4x4 der du selv fyller inn verdiene)

Ekstra oppgaver:

e) Lag en funksjon som printer den nøstede listen på en pen måte (slik at det ser ut som et rutenett)

f) Lag en funksjon oppdater som tar en slik nøstet liste som parameter. Alle ruter som har to eller tre ruter rundt seg med verdien 1 skal få verdien 1. Alle andre skal få verdien 0. Kall oppdater mange ganger og print rutenettet for hver gang. Start med et tilfeldig utvalg ruter som har verdien 1.