Considere el siguiente proceso:
Tome un número entero no negativo N.
por ejemplo, N =
571
Exprésalo en binario sin ceros a la izquierda. (Cero en sí mismo es la única excepción, convirtiéndose
0
)eg
571
=1000111011
en binarioSepare series consecutivas de unos y ceros en esta representación binaria.
por ejemplo,
1000111011
→1
,000
,111
,0
,11
Ordena las carreras de la más larga a la más corta.
por ejemplo
1
,000
,111
,0
,11
→000
,111
,11
,1
,0
Sobrescriba 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
,1
Concatena el resultado para obtener un nuevo número binario.
por ejemplo
111
,000
,11
,0
,1
→1110001101
=909
en 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 571
la 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
.BQ
lugar dejQ2
, lo que significa que puede perder el espacio entre el8
y el precedente2
.