Dado un número entero n
, genera los primeros n
números binarios inclinados, ya sea 0 o 1 indexados. Se llaman así por cómo se generan:
Escriba números en binario uno debajo del otro (justificado a la derecha):
........0
........1
.......10
.......11
......100
......101
......110
......111
.....1000
.........
Luego, debe tomar cada diagonal de abajo a la izquierda a arriba a la derecha, de modo que cada dígito final sea el último dígito de una diagonal. Aquí está la cuarta diagonal (indexada a cero) marcada con x
's, que es 100
:
........0
........1
.......10
.......11
......10x
......1x1
......x10
......111
.....1000
.........
Las diagonales ascendentes en orden son:
0
11
110
101
100
1111
1010
.......
Luego, convertir a decimal, dando 0, 3, 6, 5, 4, 15, 10, ...
Este es el código de golf , por lo que gana el código más corto en bytes.
code-golf
sequence
base-conversion
binary
mbomb007
fuente
fuente
n
o el primern+1
número?Respuestas:
Jalea, 11 bytes
Pruébalo en línea!
Explicación
La transposición es la forma más sencilla de rellenar la matriz para que funcionen las diagonales incorporadas. Luego se agregan los reveses para obtener todo en el orden correcto.
fuente
JavaScript (ES6), 53 bytes
0 indexado. No es frecuente que use una función recursiva como parámetro para
map
.fuente
Mathematica, 46 bytes
Función sin nombre que toma un entero no negativo
#
como entrada y devuelve la secuencia de índice 0 hasta el#
término enésimo. Construye los números binarios en pendiente usandoBitAnd
(bit a bit "y") con potencias apropiadas de 2.fuente
Python3,
6361 bytesUtiliza la fórmula de OEIS.
-2 bytes gracias a Luis Mendo !
i+1
->i
fuente
Sum_{ k >= 1 such that n + k == 0 mod 2^k } 2^k
a esa fórmula bit a bit más simple?PHP, 68 bytes
toma datos del argumento de la línea de comando, imprime números separados por guiones bajos. Corre con
-r
.fuente
MATL ,
1817 bytesPruébalo en línea!
Esto usa la fórmula de OEIS:
Código:
fuente
Perl 6 ,
5943 bytesUtiliza la fórmula de la página OESIS.
Actualización: Cambió a la fórmula basada en bits de la respuesta Python de TuukkaX .
Perl 6 , 67 bytes
Solución ingenua.
Convierte los números que forman parte de la diagonal a la base 2, toma el dígito correcto de cada uno y convierte el resultado a la base 10.
fuente
Jalea , 15 bytes
Esto sería más corta que la otra respuesta Jelly si tuviéramos que imprimir sólo el n º plazo.
Pruébalo en línea!
fuente
R, 66 bytes
Función sin nombre que usa la
bin
función delmiscFuncs
paquete para calcular la longitudn
representada en binario y luego usar una de las fórmulas OEIS.fuente