Dado un entero positivo n
, genera las 2^n
secuencias binarias de longitud n
ordenadas en el siguiente orden preciso.
Casos de prueba:
0:
0 or 1 (defining this is a matter of debate)
1:
0
1
2:
00
01
10
11
3:
000
001
010
100
011
101
110
111
4:
0000
0001
0010
0100
1000
0011
0101
1001
0110
1010
1100
0111
1011
1101
1110
1111
etc.
Además, el patrón de combinatoria está relacionado con el Triángulo de Pascal.
0:
1 (this is given regardless of the definition given to 2^0)
1:
1
1
2:
1
2
1
3:
1
3
3
1
4:
1
4
6
4
1
etc.
code-golf
combinatorics
binary
desarmar
fuente
fuente
Respuestas:
Haskell, 78 bytes
Ejemplo de uso:
f 2
->[[0,0],[0,1],[1,0],[1,1]]
.Cómo funciona:
fuente
Prelude
por<$
yData.List
parasortOn
). Además: mi código no es un programa completo, por lo que no se compilará.sortOn
. Voy a extrañarsortBy (compare `on` f)
.Python 2, 146 bytes
Todavía estoy trabajando en esto, ¡aunque cualquier sugerencia sería muy apreciada!
Sin golf
fuente
from itertools import*
y luego simplemente usarpermutations
en la lambda. ahorra 1 bytePython 2,
12212010298 bytes18 bytes guardados gracias a Flp.Tkc
4 bytes guardados gracias a xnor
Explicación
Esto hace que todas las cadenas binarias de longitud x con:
Luego los clasifico según:
sorted(x)
prioriza el número de1
s mientrasint(x[::-1],2)
prioriza la segunda condiciónPor último, estos se unen con líneas nuevas y se imprimen.
fuente
Perl, 63 bytes
-4 gracias a @Ton Hospel.
-2 gracias a @Gabriel Benamy.
Ejecutar con
-E
(que habilita la funciónsay
):Explicaciones cortas :
"{1,0}"x$_
crea una cadena compuesta de$_
veces{1,0}
($_
es la entrada). Por ejemplo, con3
:{1,1}{1,0}{1,0}
.glob
hace algo de magia y genera todas las combinaciones de un elemento de cada grupo de llaves (es decir, todas las combinaciones que queremos imprimir).$b=~y/1//c-$a=~y/1//c
compara el número de1
en cada cadena, y si tienen el mismo número,$b-$a
se ordenará de acuerdo con la segunda regla.fuente
y/1//c
ay/0//
ambas vecesy///c
!<=>
por-
Perl,
116106105102 bytesLegible:
La subrutina
e
convierte su argumento en un valor binario, rellenado con ceros, para que sea la longitud de entrada (por ejemplo, entrada de 5 pads con ceros hasta que tenga 5 caracteres de longitud). La subrutinaf
toma un valor binario de este tipo y le otorga un peso de clasificación de acuerdo con cómo debe procesarse.El rango 0 .. [input] 2 -1 se coloca en una clasificación estable, ordenando por el peso (aquí, "estable" significa que cuando dos valores tienen el mismo peso, se devuelven en el mismo orden en que aparecen en el entrada), y luego se retroalimentan a la subrutina
e
y salida.Algunos de ustedes pueden haber visto mi publicación original, pero ayer entendí mal el problema y lo eliminé inmediatamente después de darme cuenta.
fuente
n>=5
. Por ejemplo, withn>=5
,01101
viene antes10011
pero debería ser después.Raqueta 109 bytes
Sin golf:
Pruebas:
Salida:
fuente
Ruby 2.x, 129 bytes
fuente
PHP, 49 bytes
Corre con
-r
.fuente
MATLAB, 68 bytes
fuente
Bash, 65 bytes
Golfed
Prueba
fuente
Jalea , 14 bytes
Pruébalo en línea!
Sorprendido, esto no había sido publicado todavía.
fuente