Considere o seguinte processo:
Pegue um número inteiro não negativo N.
por exemplo, N =
571Expresse-o em binário sem zeros à esquerda. (Zero em si é a única exceção, tornar-se
0.)por exemplo
571=1000111011em binárioDivida execuções consecutivas de uns e zeros nessa representação binária.
por exemplo
1000111011→1,000,111,0,11Classifique as execuções do maior para o menor.
por exemplo
1,000,111,0,11→000,111,11,1,0Sobrescreva todos os dígitos em cada execução com
1's e0' alternados , sempre começando com1's.por exemplo
000,111,11,1,0→111,000,11,0,1Concatene o resultado para obter um novo número binário.
por exemplo
111,000,11,0,1→1110001101=909em decimal
Ao plotar os valores produzidos por esse processo, você obtém um gráfico bem organizado:
E espero que fique claro por que estou chamando a sequência resultante de Temple Skyline :
Desafio
Escreva um programa ou função que receba um número inteiro não negativo N e imprima ou retorne o número de sequência correspondente do Skyline do Templo. Sua entrada e saída devem estar em decimal.
Por exemplo, se a entrada é 571a saída deve ser 909.
O código mais curto em bytes vence.
Para referência, aqui estão os termos na sequência de 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


.BQvez dejQ2, o que significa que pode perder o espaço entre o8e o anterior2.