Tema 1: Tverrsum

Nivå 1:

Odd har hørt begrepet tverrsum i matematikken, men han vet ikke hva det betyr. Klassekameraten Ammar er god i matematikk og flink til å programmere. Han har laget denne koden til Odd for at han selv skal finne ut hva tverrsummen til et tall er:

import random
tall = random.randint(1,1000)
print("tall: " + str(tall))
for digit in str(tall):
    print("siffer: " + str(digit))
print("sum av sifrene: " + str(sum(int(digit)for digit in str(tall))))

a)
Kjør koden flere ganger og forklar med ord hva tverrsum er.
b)
Hva er den laveste og hva er den høyeste tverrsummen du kan få slik som koden er nå?

Odd laget sin egen kode for å prøve å finne tverrsummen av ulike tall:

tall = 
tverrsum = sum(int(digit)for digit in str(tall))
print()

c)
Odd mangler noe i linje 1 og i linje 3 for at programmet skal fungere. Kan du hjelpe han med koden?
d)
Kjør programmet for flere ulike tall og sjekk tverrsummen.
e)
Forsøk å få følgende tverrsummer som output:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
f)
Er det bare en mulighet for å få de ulike tverrsummene?

Nivå 2:

Odd og Ammar jobber sammen med å lage en kode som finner tverrsummen av tilfeldige tall mellom 10 og 100.

a)
De har funnet forslag til kode, men de har ikke linjene i riktig rekkefølge. Kan du hjelpe dem?

tall = random.randint(10,100)
import random
print(tverrsum)
tverrsum = sum(int(digit)for digit in str(tall))
print(tall)

a)
Test koden og finn tverrsummen for tilfeldige tall mellom 10 og 1000.

Nivå 3:

Nå vil guttene lage en kode der de kan sjekke etter ulike tverrsummer i ulike tall-intervaller. Feks Hvilke tverrsummer lik 4 er del mellom 10 og 30.
svar: 13 – 22

a)
Her er deler av en kode som kan fungere. Det mangler kode i linje 4, 6 og 7. Kan du hjelpe dem videre?

a = 10
b = 30
svar = int(input("Hvilken tverrsum vil du sjekke etter? "))
for i in range( , ):
    tverrsum = sum(int(digit) for digit in str(i))
    if tverrsum ==  :
        print()

Fasit/kodehjelp:

a = 10
b = 30
svar = int(input("Hvilken tverrsum vil du sjekke etter? "))
for i in range(a, b):
    tverrsum = sum(int(digit) for digit in str(i))
    if tverrsum == svar:
        print(i)

b)
Sjekk etter andre tverrsummer i andre tall-intervaller.

Nivå 4:

from matplotlib import pyplot
n = 100
x = []
y = []
for i in range(1, n):
  tverrsum = sum(int(digit) for digit in str(i))
  x.append(tverrsum)
print(x)
for i in x:
  svar = x.count(i)
  y.append(svar)
  print("tverrsum " + str(i) + " - antall:" + str(svar))
pyplot.bar(x,y)
pyplot.xlabel("Tverrsum")
pyplot.ylabel("Antall")
pyplot.title("Antall av de ulike tverrsummene av tallene du valgte")
pyplot.show()

Denne koden finner tverrsummen av tall fra 1 til n.
Alle tverrsummene legges inn i en liste x som skrives til skjerm.
Programmet teller så antall av alle tverrsummene i lista x og legger antallet i en liste y.
Programmet skriver ut antallet til alle tverrsummene i listen.
Programmet skriver så ut et stolpediagram med frekvensene til de ulike tverrsummene.

a)
Dette er utskriften av liste x med tverrsummene fra 1 til 100.
Klarer du å lese tallene fra 1-100 utifra tverrsummene?

1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

b)
Det ser ut til at det er flest av tverrsummen 9 i tallene mellom 1 og 100. Stemmer det med stolpediagrammet som skriver ut?
Hvorfor er det slik?

c)
Prøv det samme for n = 1000