Track
/
Zig
Zig
/
Esercizi
/
Congettura di Collatz
Congettura di Collatz

Congettura di Collatz

Facile

Introduzione

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.

  • Se è pari, dividilo per 2.
  • Se è dispari, moltiplicalo per 3 e aggiungi 1.

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.

Istruzioni

Dato un numero intero positivo, restituisci il numero di passi necessari per arrivare a 1 secondo le regole della congettura di Collatz.

Gestione degli errori

Per questo esercizio devi aggiungere un error set ComputationError che contiene l'errore IllegalArgument. Ricorda di renderlo pubblico! La funzione steps deve restituire ComputationError.IllegalArgument quando il suo input è uguale a zero.

Gli esercizi successivi di solito ometteranno istruzioni esplicite come questa. In generale, Exercism si aspetta che tu legga il file di test quando implementi la soluzione.

Per maggiori dettagli sugli errori in Zig, vedi:


Fonte

WikipediaIl link si apre in una nuova finestra o scheda
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Zig Exercism

Vuoi iniziare Congettura di Collatz?

Iscriviti a Exercism per imparare e padroneggiare Zig con 104 esercizi e il mentoring di persone reali, tutto gratis.