Oppgave med objekter som peker p? andre objekter

Vi ?nsker at f?lgende kode skal fungere:

l = Liste()
l.append(1)
l.append("Hei")
l.append(3)
assert 3 in l
assert 2 not in l
assert l[0] == 1
assert l[1] == "Hei"
print(str(l))  # skal gi [1, "Hei", 3]  eller lignende

Implementer en klasse Liste og evt andre klasser som gj?r som koden over fungerer uten ? bruke lister, ordb?ker eller lignende. Du vil f? bruk for noen magiske metoder:

def __contains__(self, element):
    # blir kalt n?r man bruker "in" og skal returnere True/False

def __getitem__(self, element):
    # blir kalt n?r man indekserer med [element] og returnerer elementet p? den posisjonen

Algoritmeoppgave

Vi har en to-dimensjonal verden representert som et rutetenett. Noen ruter er utilgjengelige, men ellers kan vi bevege oss opp/ned og til h?yre/venstre p? alle andre ruter (men ikke skr?tt).

Implementer en algoritme som finner den korteste veien mellom to ruter. Returner gjerne veien som en liste over koordinater.

Velg selv hvordan verdenen skal representeres og hvilke klasser/funksjoner/metoder du vil bruke.

Eksempel:

# Representerer verden som en n?stet liste med 1 for tilgjengelige ruter og 0 for utilgjengelige ruter.
verden = [
    [1, 1, 1, 1],
    [0, 0, 0, 1],
    [1, 1, 1, 1]]

# Finn korteste sti fra nederste venstre hj?rne til ?verste venstre hj?rne
# [2, 0] er rad 2/kolonne 0
rute = finn_korteste_vei(fra=[2, 0], til=[0, 0], verden=verden)
# b?r gi stien [[2,0], [2,1], [2,2], [2, 3], [1,3], [0,3], [0,2], [0,1], [0,0]]

PS:

Spill

Implementer ditt eget spill (F?lg enten oppskriften eller lag ditt eget spill)