We beschouwen voor deze oefening een reeks van getallen $$n_0$$, $$n_1$$, $$n_2$$ ... die als volgt opgebouwd wordt:

  1. Vertrek van een willekeurig geheel getal $$n_0 > 1$$
  2. Het volgende getal wordt telkens als volgt bepaald:
    • Als het getal $$n_i$$ even is, dan wordt het gedeeld door 2, $$n_{i+1}$$ = $$n_i$$ / 2
    • Als het getal $$n_i$$ oneven is, dan is $$n_{i+1}$$ = $$n_i$$ * 3 +1

Op deze manier krijgen we steeds nieuwe getallen die ofwel groter zijn, ofwel kleiner zijn. Dit gaat zo verder tot we uiteindelijk bij het getal 1 uitkomen, dan stopt de reeks.

Afhankelijk van het getal waarmee we starten, kan het het getal 1 snel bereikt worden, of kunnen heel wat stappen nodig zijn, waarbij soms eerst heel grote getallen bekomen worden alvorens ze weer kleiner worden. Hoewel dit niet wiskundig is aangetoond, komen we steeds uit bij het getal 1. Het grootste getal dat onderweg bereikt wordt, noemen we de piek van de reeks.

Als we twee startgetallen nemen die zeer dicht bij elkaar liggen, kan de reeks er toch helemaal anders uitzien:

Verschil tussen startgetal = 45 en 47
Verschil tussen startgetal = 45 en 47

Opgave

Schrijf een functie hoogste_piek die als argumenten twee gehele getallen $$m$$ en $$n$$ aanneemt ($$m < n$$).

De functie gaat voor elk startgetal tussen $$m$$ en $$n$$ (inclusief grenzen) na wat de piek is van de reeks zoals hierboven beschreven.

De functie retourneert één geheel getal, namelijk het startgetal waarvoor deze piek het hoogste is.

Voorbeeld

>>> hoogste_piek(45, 100)
47

>>> hoogste_piek(3876, 4339)
4255