Una sera ti è capitato tra le mani un vecchio quaderno pieno di scarabocchi criptici, come se qualcuno stesse inseguendo un'idea in modo ossessivo. Su una pagina spiccava una sola domanda: Ogni numero può trovare la strada verso 1? Era legata a qualcosa chiamato Congettura di Collatz, un enigma che ha lasciato perplessi i pensatori per decenni.
Le regole erano ingannevolmente semplici. Scegli un numero intero positivo.
Poi ripeti questi passaggi con il risultato, continuando all'infinito.
La curiosità ti ha spinto a scegliere il numero 12 per provarlo, e così hai iniziato il viaggio:
12 ➜ 6 ➜ 3 ➜ 10 ➜ 5 ➜ 16 ➜ 8 ➜ 4 ➜ 2 ➜ 1
Partendo dal secondo numero (6), ci sono voluti 9 passaggi per arrivare a 1, e ogni volta che le regole si ripetevano il numero continuava a cambiare. All'inizio la sequenza sembrava imprevedibile: saltava su, giù, dappertutto. Eppure la congettura afferma che, qualunque sia il numero di partenza, si finisce sempre a 1.
Era affascinante, ma anche sconcertante. Perché sembra funzionare sempre? Potrebbe esistere un numero in cui il processo si rompe, ripetendosi all'infinito o fuggendo verso l'infinito? Il quaderno suggeriva che risolverlo avrebbe potuto rivelare qualcosa di profondo: e con esso attendono fama, fortuna e un posto nella storia chiunque riesca a svelarne i segreti.
Dato un numero intero positivo, restituisci il numero di passi necessari per arrivare a 1 secondo le regole della congettura di Collatz.
| Registro | Utilizzo | Tipo | Descrizione |
|---|---|---|---|
$a0 |
input | intero | numero di partenza |
$v0 |
output | intero | numero di passi previsto, -1 se il numero non è valido |
$t0-9 |
temporaneo | qualsiasi | usati per l'archiviazione temporanea |
Iscriviti a Exercism per imparare e padroneggiare MIPS Assembly con 70 esercizi e il mentoring di persone reali, tutto gratis.