Considera il seguente processo:
Prendi un numero intero non negativo N.
es. N =
571
Esprimilo in binario senza zero iniziali. (Zero stesso è l'unica eccezione, diventando
0
.)ad esempio
571
=1000111011
in binarioDividi le sequenze consecutive di uno e zero in questa rappresentazione binaria.
ad esempio
1000111011
→1
,000
,111
,0
,11
Ordina le piste dal più lungo al più corto.
ad esempio
1
,000
,111
,0
,11
→000
,111
,11
,1
,0
Sovrascrivi tutte le cifre di ogni corsa alternando
1
'e0
', iniziando sempre con1
'.ad esempio
000
,111
,11
,1
,0
→111
,000
,11
,0
,1
Concatena il risultato per ottenere un nuovo numero binario.
ad esempio
111
,000
,11
,0
,1
→1110001101
=909
in decimale
Quando tracciate i valori prodotti da questo processo, ottenete un grafico piuttosto accurato:
Ed è apparentemente chiaro il motivo per cui sto chiamando la sequenza risultante la sequenza di Temple Skyline :
Sfida
Scrivi un programma o una funzione che accetta un numero intero non negativo N e stampa o restituisce il corrispondente numero di sequenza di Temple Skyline. Sia l'input che l'output devono essere decimali.
es. Se l'ingresso è 571
l'uscita dovrebbe essere 909
.
Vince il codice più breve in byte.
Per riferimento, ecco i termini nella sequenza da N = 0 a 20:
0 1
1 1
2 2
3 3
4 6
5 5
6 6
7 7
8 14
9 13
10 10
11 13
12 12
13 13
14 14
15 15
16 30
17 29
18 26
19 25
20 26
.BQ
invece dijQ2
, il che significa che puoi perdere lo spazio tra il8
e il precedente2
.