Figurtall og programmering

Figurtall og programmering

Figur 1, 2 og 3 med grønne kvadrater

Ovenfor ser du tre figurer. Figurene er satt sammen av små grønne kvadrater. Tenk deg at du skal fortsette å lage figurer etter samme mønster.

Du skal lage et program som beregner og skriver ut hvor mange små grønne kvadrater det vil være i hver av de 20 første figurene.

Sett opp en algoritme du kan bruke for å lage programmet.

Ta utgangspunkt i algoritmen fra oppgave a) og lag programmet.

Tenk deg at du har 1 000 000 små kvadrater. Du starter med å lage figur 1 og fortsetter så med å lage figur 2, figur 3 osv.

Lag et program som du kan bruke for å finne ut hvor mange figurer du kan lage, og hvor mange små kvadrater du har igjen når du har laget alle figurene.

Fasit

Du kan lage 143 figurer. Da har du 15 017 brikker til overs.

Løsningsforslag

Jeg deler opp figuren slik:

Oppdeling av figurtall

Jeg velger å skrive algoritmen som pseudokode slik at det går raskt å skrive den i Python etterpå.

for hver figur fra n = 1 til n = 20:
	kvadrat = n^2
	høyre_side = n
	nede_venstre = n + 1
	sum = kvadrat + høyre_side + nede_venstre
	print sum
for n in range(1, 21):
	kvadrat = n ** 2
	høyre_side = n
	nede_venstre = n + 1
	sum = kvadrat + høyre_side + nede_venstre
	print(f"Figur {n} har {sum} kvadrater.")

Programmet skrev ut hvor mange kvadrater det er i hver figur. Figur 20 har 441 kvadrater.

Vi må holde styr på hvor mange kvadrater vi har brukt med en totalsum, også bruker vi en whileløkke for å avslutte når vi er gått tomme for brikker.

totalsum = 0
n = 0

while totalsum <= 1_000_000:
    n = n + 1
    kvadrat = n ** 2
    høyre_side = n
    nede_venstre = n + 1
    figur = kvadrat + høyre_side + nede_venstre
    totalsum = totalsum + figur   # Legger til den siste figuren

# While-løkka har kjørt en gang for mye og 
# har brukt opp flere brikker enn vi har.
# Vi må derfor "gå en figur tilbake"
brikker_brukt_før_siste = totalsum - figur
brikker_til_overs = 1_000_000 - brikker_brukt_før_siste

print(f"Etter figur {n-1} har du {brikker_til_overs} brikker til overs.")

Output: Etter figur 142 har du 15017 brikker til overs.

Du kan lage 142 figurer. Da har du 15 017 brikker til overs.

Sensorveiledning
2,5 poeng

For å få uttelling må algoritmen beskrive en steg for steg framgangsmåte som inkluderer en løkke.

2,5 poeng

Et delvis riktig program kan gi 1 poeng. En kode som er godt forklart, kan gi uttelling i oppgave a).

Et delvis riktig program kan gi 1 poeng. For å få full uttelling, må programmet komme fram til at det kan lages 142 figurer, og at det da vil være 15 017 kvadrater igjen.