Rutenett#
Vi kan lage rutenett ved å lage en liste som inneholder hver rad.
For å skrive ut rutenettet, kan vi skrive ut hver rad med en for
-løkke.
rutenett = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
for rad in rutenett:
print(rad)
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
Vi kan også deklarere rutenettet på én linje med rutenett = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Indeksere i rutenett#
Dette kartet kan hjelpe oss med å indeksere i rutenettet.
Søyle
Rad 0 1 2
0 [1, 2, 3]
1 [4, 5, 6]
2 [7, 8, 9]
For å indeksere i rutenettet skriver vi rutenett[rad][søyle]
.
rutenett = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print(rutenett[0][2]) # Rad 0, søyle 2
print(rutenett[1][1]) # Rad 1, søyle 1
print(rutenett[2][0]) # Rad 2, søyle 0
3
5
7
Generere rutenett#
Vi kan generere rutenett ved å bruke en løkke i en løkke.
# Et tomt rutenett
rutenett = []
for n in range(5):
# Lager en tom rad
rad = []
# Legger til på raden
for m in range(5):
rad.append("#")
# Legger raden til på rutenettet
rutenett.append(rad)
# Skriver ut rutenettet
for rad in rutenett:
print(rad)
['#', '#', '#', '#', '#']
['#', '#', '#', '#', '#']
['#', '#', '#', '#', '#']
['#', '#', '#', '#', '#']
['#', '#', '#', '#', '#']
I noen tilfeller kan vi ønske å bruke strings for radene i stedet for lister.
Da blir rutenettet en liste med strings som representerer hver rad.
rutenett = []
for n in range(5):
rad = ""
for m in range(5):
rad += "# "
rutenett.append(rad)
for rad in rutenett:
print(rad)
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
Oppgaver#
Oppgave 1 🪟
Lag et program som lar en bruker skrive inn antall rader og antall søyler for et rutenett, og som skriver ut det tilsvarende rutenettet med #
.
Antall rader: 3
Antall søyler: 5
# # # # #
# # # # #
# # # # #
Løsningsforslag
Det finnes flere måter å gjøre dette på, men her har jeg brukt at man kan gange strings for å lage radene.
rader = int(input("Antall rader: "))
søyler = int(input("Antall søyler: "))
for n in range(rader):
print("# " * søyler)
# # # # #
# # # # #
# # # # #
Oppgave 2 ✖️
Lag et program som skriver ut gangetabellen fra \(1\) til \(9\) som et rutenett.
Fasit
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
Løsningsforslag
rutenett = []
for n in range(1, 10):
rad = ""
for m in range(1, 10):
rad += f"{m * n:>3}"
rutenett.append(rad)
for rad in rutenett:
print(rad)
Oppgave 3 🎨
Lag de følgende kvadratiske \(n\) x \(n\)-mønstrene med kode. Alle skal kunne variere i størrelse med en variabel \(n \geq 3\).
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Oppgave 4 🧫 (utfordring)
Conway’s Game of Life spilles på et rutenett med celler.
Hver celle følger disse reglene.
Naboer |
Oppdatering |
---|---|
Færre enn to naboer |
Dør |
To eller tre naboer |
Fortsetter å leve |
Flere enn tre naboer |
Dør |
Død, men med akkurat tre levende naboer |
Kommer til live |
Lag Game of Life for et \(n\) x \(n\)-rutenett i Python.
Eksempel: \(3\) x \(3\)
0 0 1 0 1 1 0 1 1
0 1 1 -> 0 1 1 -> 1 0 0
0 0 1 0 1 1 0 1 1
Oppgave 5 ♟️ (utfordring)
Problemstillingen n queens er en kjent programmeringsoppgave.
Lag et \(n\) x \(n\)-sjakkbrett.
Fyll det med \(n\) dronninger på en måte som gjør at de ikke kan angripe hverandre.
Tallet \(n\) må være større enn \(3\).
Lag et program som finner en løsning for \(n\) x \(n\)-brettet og skriver det ut som et rutenett.
Løsning: \(n = 4\)
Her er en mulig løsning for \(n = 4\)
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0