Un bit flota del LSB al MSB moviéndose una posición cada vez hasta que flota en la parte superior del contenedor:
0000
0001
0010
0100
1000
Una vez que un bit flota hacia la cima, otro comienza su viaje y se detiene cuando se encuentra con otro:
1001
1010
1100
Esto sucede hasta que el contenedor se llena de bits:
1101
1110
1111
Reto
Dado un número entero, genera la " secuencia flotante de bits " para un contenedor de ese número de bits.
- Cada término de la secuencia puede estar separado por cualquier separador de su elección.
- Editar : secuencia debe ser mostrado como números decimales enteros, empezando por la primera therm:
0
. - El tamaño del contenedor debe ser mayor que cero y hasta el número de bits del entero más grande admitido por el idioma de su elección. Puede suponer que la entrada siempre coincide con este requisito.
Ejemplos
Solo se requiere la secuencia numérica, la representación binaria se muestra como ejemplo:
Para 1 :
0 1
0 -> 0 1 -> 1
Para 3 :
0 1 2 4 5 6 7
000 -> 0 001 -> 1 010 -> 2 100 -> 4 101 -> 5 110 -> 6 111 -> 7
Para 4 :
0 1 2 4 8 9 10 12 13 14 15
0000 -> 0 0001 -> 1 0010 -> 2 0100 -> 4 1000 -> 8 1001 -> 9 1010 -> 10 1100 -> 12 1101 -> 13 1110 -> 14 1111 -> 15
Para 8 :
0 1 2 4 8 16 32 64 128 129 130 132 136 144 160 192 193 194 196 200 208 224 225 226 228 232 240 241 242 244 248 249 250 252 253 254 255
00000000 -> 0 00000001 -> 1 00000010 -> 2 00000100 -> 4 00001000 -> 8 … … … 11111000 -> 248 11111001 -> 249 11111010 -> 250 11111100 -> 252 11111101 -> 253 11111110 -> 254 11111111 -> 255
[0.0, 1.0]
0 -> [0, 1]
Respuestas:
05AB1E , 10 bytes
Pruébalo en línea!
fuente
.0
números enteros por defecto, pero no estoy seguro. Personalmente, generalmente pongo elï
pie de página en letra bonita y no lo incluyo en el conteo de bytes.Python 2 , 45 bytes
Pruébalo en línea!
Resulta más corto generar
2**n
menos cada término en la secuencia de entradan
. Si observamos su expansión binaria, a continuaciónn=5
, vemos un bonito patrón de triángulos de 1 en las expansiones binarias.Cada número se obtiene del anterior eliminando el que está más a la derecha en la expansión binaria, excepto que si eso fuera el número 0, restamos 1 en su lugar, creando un nuevo bloque de 1 que comienza un nuevo triángulo más pequeño. Esto se implementa como
y=y&y-1or~-y
, dondey&y-1
hay un pequeño truco para eliminar el 1 más a la derecha, yor~-y
day-1
en su lugar si ese valor fue 0.Python 2 , 49 bytes
Pruébalo en línea!
Una función que imprime, terminando con error. El programa más agradable a continuación resultó más largo.
51 bytes
Pruébalo en línea!
fuente
Jalea ,
1110 bytesPuerto de @Grimy 's respuesta 05AB1E , así que asegúrese de que le upvote!
-1 byte gracias a @Grimy .
Pruébalo en línea.
Explicación:
fuente
R_2
->Ḷ’
para -1.Ḷ
es el único rango sensible , realmente desearía que 05AB1E tuviera un byte único para ello.Perl 5 (
-n
),4140 bytes-1 byte gracias a Xcali
TIO
"{0,1}"x$_
: la cadena se"{0,1}"
repite n veces"0b".
: concatenar a"0b"
glob
: expansión glob (producto cartesiano)map{
...}
: para cada elemento/01.*1/||
: saltar cuando01
algo lo sigue1
say oct
: para convertir a decimal y decirfuente
JavaScript (ES6), 43 bytes
En caso de duda, utilice el método de xnor .
Pruébalo en línea!
JavaScript (ES6),
59 57 5552 bytesPruébalo en línea!
¿Cómo?
Comentado
fuente
Python 2 ,
9576 bytesPruébalo en línea!
fuente
Perl 6 , 43 bytes
Pruébalo en línea!
Bloque de código anónimo que toma un número y genera la secuencia separada por nuevas líneas. Esto funciona comenzando con 0 repetidas n veces y luego reemplazando
01
con10
o el último0
con a1
hasta que el número sea solo unos.O 40 bytes, usando el enfoque de Nahuel Fouilleul
Pruébalo en línea!
fuente
01
con10
o el último0
con un1
hasta que el número sea solo unos " ¡Es un movimiento genial!Python 2 , 60 bytes
Pruébalo en línea!
Python 3 , 76 bytes
Pruébalo en línea!
fuente
Python 2 , 67 bytes
Pruébalo en línea!
fuente
Python 3 , 62 bytes
Pruébalo en línea!
La idea es más o menos la misma que la solución de @ Arnauld .
Otra solución de 65 bytes:
Pruébalo en línea!
fuente
Jalea , 12 bytes
Pruébalo en línea!
fuente
05AB1E ,
1312 bytes-1 byte gracias a @Grimy (también eche un vistazo a su enfoque más corto aquí).
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
oL<ʒbIj1Û1¢2‹
. No parece que pueda bajarlo.oL<ʒbIj1ÛSO2‹
e intentaba ver dónde estaba mi error. :) Pero me alegra ver que no puedes encontrar una versión más corta de una de mis respuestas para variar. ; p (enb4 encuentras uno más corto después de todo xD)SO2‹
puede ser de 3 bytes de alguna manera, tal vez, pero no lo veo y tampoco estoy del todo seguro. Hay algunas alternativas, comoSO1~
oSÆ>d
, pero no puedo encontrar un byte 3.SO!
. Estoy bastante seguro de que tengo algunas respuestas antiguas2‹
que también podrían beneficiarse de esto.Retina , 26 bytes
Pruébalo en línea! Salidas en binario. Si eso no es aceptable, entonces para 39 bytes:
Pruébalo en línea! Explicación:
Convierta la entrada en una cadena de
n
ceros.Haga coincidir todas las posibles subcadenas no vacías.
Para cada subcadena, salida: el prefijo con
0
s cambiado a1
s; el sufijo el partido con la inicial0
cambió a1
.Convierte de binario a decimal.
fuente
Brachylog , 27 bytes
Pruébalo en línea!
Salidas fuera de servicio y con duplicados. Si eso no está bien, vételo
do
al final.fuente
Carbón de leña , 19 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Perl 5 , 40 bytes
Pruébalo en línea!
fuente
Retina , 24 bytes
Salidas en binario. La entrada debe tener una nueva línea final.
Intento de explicación:
Traté de evitar la
/0/
opción de expresión regular de 3 bytes de largo reorganizando las opciones, pero no pude.Pruébalo en línea!
fuente
C (clang) , 73 bytes
Pruébalo en línea!
fuente
k4,
2824 bytesEnfoque de @ Grimy portado a k4
editar: -4 gracias a ngn!
fuente
!:'1+|!:
->|,\!:
xexp
|,\!:
parece tan obvio ahora que lo veo!