Oggi vedremo una sequenza a , correlata alla funzione Collatz f :
Chiamiamo una sequenza della forma z, f (z), f (f (z)), ... una sequenza di Collatz .
Il primo numero nella nostra sequenza, a (1) , è 0 . Sotto ripetute applicazioni di f , rientra in un ciclo 0 → 0 →…
Il numero più piccolo che non abbiamo ancora visto è 1, facendo un (2) = 1 . Sotto ripetute applicazioni di f , rientra in un ciclo 1 → 4 → 2 → 1 → ...
Ora abbiamo visto il numero 2 nel ciclo sopra, quindi il prossimo numero più piccolo è a (3) = 3 , cadendo nel ciclo 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → 4 → 2 → 1 → ...
In tutti i cicli precedenti abbiamo già visto 4 e 5 , quindi il numero successivo è a (4) = 6 .
Ormai dovresti avere l'idea. a (n) è il numero più piccolo che non faceva parte di alcuna sequenza di Collatz per tutte a (1), ..., a (n - 1) .
Scrivi un programma o una funzione che, dato un numero intero positivo n , restituisce a (n) . Vince il codice più breve in byte.
Casi test:
1 -> 0
2 -> 1
3 -> 3
4 -> 6
5 -> 7
6 -> 9
7 -> 12
8 -> 15
9 -> 18
10 -> 19
50 -> 114
(Questa è la sequenza OEIS A061641 .)
n
essere basato su 0?
a(n+1) = a(n) odd: 3*a(n)+1, or a(n) even: a(n)/2
a
non è basato su 0, non capisco perché sembri "parlare di base 0" qui:a(n) is the smallest number that was not part of any Collatz sequences for all a(0), …, a(n − 1).