Considere o seguinte processo:
Pegue um número inteiro não negativo N.
por exemplo, N =
571
Expresse-o em binário sem zeros à esquerda. (Zero em si é a única exceção, tornar-se
0
.)por exemplo
571
=1000111011
em binárioDivida execuções consecutivas de uns e zeros nessa representação binária.
por exemplo
1000111011
→1
,000
,111
,0
,11
Classifique as execuções do maior para o menor.
por exemplo
1
,000
,111
,0
,11
→000
,111
,11
,1
,0
Sobrescreva 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
,1
Concatene o resultado para obter um novo número binário.
por exemplo
111
,000
,11
,0
,1
→1110001101
=909
em 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 é 571
a 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
.BQ
vez dejQ2
, o que significa que pode perder o espaço entre o8
e o anterior2
.