Ispirato da http://xkcd.com/710/, ecco un codice da golf per questo.
La sfida
Dato un numero intero positivo maggiore di 0, stampa la sequenza di grandine per quel numero.
La sequenza della grandine
Vedi Wikipedia per maggiori dettagli ..
- Se il numero è pari, dividerlo per due.
- Se il numero è dispari, triplicalo e aggiungine uno.
Ripeti l'operazione con il numero prodotto fino a raggiungere 1. (se continua dopo 1, andrà in un ciclo infinito di 1 -> 4 -> 2 -> 1...
)
A volte il codice è il modo migliore per spiegare, quindi eccone alcuni da Wikipedia
function collatz(n)
show n
if n > 1
if n is odd
call collatz(3n + 1)
else
call collatz(n / 2)
Questo codice funziona, ma sto aggiungendo una sfida in più. Il programma non deve essere vulnerabile agli stack overflow . Quindi deve usare l'iterazione o la ricorsione della coda.
Inoltre, punti bonus per se può calcolare grandi numeri e la lingua non lo ha già implementato. (o se reimplementi il supporto per numeri grandi utilizzando numeri interi di lunghezza fissa)
Scenario di prova
Number: 21
Results: 21 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
Number: 3
Results: 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Inoltre, il codice golf deve includere l'input e l'output dell'utente completo.