Divideix, triplica¶
Partint d’un nombre natural, n, definim la sèrie matemàtica S(n) de la forma següent:
Per exemple, S(120) és la successió
120, 60, 30, 15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1
Fixeu-vos que els termes creixen i decreixen. Ningú no ho ha demostrat, però sembla ser que aquesta sèrie sempre convergeix a 1, independentment del nombre inicial n [1]. Entendrem per tant que és una successió finita de nombres naturals, el darrer terme de la qual és el 1.
Deseu al fitxer divtri.py
les funcions següents:
Dissenyeu la funció:
- successio(n)¶
A partir d’un valor
n
positiu, genera un iterador sobre els nombres de la successió S(n) . Exemples:>>> it = successio(120) >>> next(it) 120 >>> next(it) 60 >>> next(it) 30 >>> for i in range(15): ... a = next(it) >>> next(it) 4 >>> next(it) 2 >>> next(it) 1
Disposeu de més jocs de prova en el fitxer
test-successio.txt
.Dissenyeu la funció:
- maxmin(it)¶
A partir d’un iterador finit com l’obtingut a la funció anterior,
it
, retorna una tupla amb el terme més gran i el terme més petit deit
. Exemples:>>> it = iter([10, 5, 16, 8, 4, 2, 1]) >>> maxmin(it) (16, 1)
Disposeu de més jocs de prova en el fitxer
test-maxmin.txt
.
Disposeu d’una solució a divtri.py
.