Considera il seguente processo:
Prendi un numero intero non negativo N.
es. N =
571Esprimilo in binario senza zero iniziali. (Zero stesso è l'unica eccezione, diventando
0.)ad esempio
571=1000111011in binarioDividi le sequenze consecutive di uno e zero in questa rappresentazione binaria.
ad esempio
1000111011→1,000,111,0,11Ordina le piste dal più lungo al più corto.
ad esempio
1,000,111,0,11→000,111,11,1,0Sovrascrivi tutte le cifre di ogni corsa alternando
1'e0', iniziando sempre con1'.ad esempio
000,111,11,1,0→111,000,11,0,1Concatena il risultato per ottenere un nuovo numero binario.
ad esempio
111,000,11,0,1→1110001101=909in 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 è 571l'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


.BQinvece dijQ2, il che significa che puoi perdere lo spazio tra il8e il precedente2.