Considere el siguiente proceso:
Tome un número entero no negativo N.
por ejemplo, N =
571Exprésalo en binario sin ceros a la izquierda. (Cero en sí mismo es la única excepción, convirtiéndose
0)eg
571=1000111011en binarioSepare series consecutivas de unos y ceros en esta representación binaria.
por ejemplo,
1000111011→1,000,111,0,11Ordena las carreras de la más larga a la más corta.
por ejemplo
1,000,111,0,11→000,111,11,1,0Sobrescriba todos los dígitos en cada ejecución alternando
1'sy0' s, siempre comenzando con1's.por ejemplo
000,111,11,1,0→111,000,11,0,1Concatena el resultado para obtener un nuevo número binario.
por ejemplo
111,000,11,0,1→1110001101=909en decimal
Cuando traza los valores producidos por este proceso, obtiene un gráfico bastante ordenado:
Y es de esperar que sea evidente por qué llamo a la secuencia resultante la secuencia Temple Skyline :
Reto
Escriba un programa o función que tome un número entero no negativo N e imprima o devuelva el número de secuencia correspondiente de Temple Skyline. Su entrada y salida deben estar en decimal.
Por ejemplo, si la entrada es 571la salida debería ser 909.
El código más corto en bytes gana.
Como referencia, aquí están los términos en la secuencia 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


.BQlugar dejQ2, lo que significa que puede perder el espacio entre el8y el precedente2.