Haga un código que tome una lista y un número como entrada, y genere todas las combinaciones posibles con la longitud del número. Por ejemplo, con la lista {0,1} y el número 2 :
00
01
10
11
Su programa no tiene que esperar caracteres dos veces o más a menudo en la lista, como {0,0,0,0,0,1,1,5,5}
Asegúrese de imprimir las combinaciones ordenadas, en el orden de la lista:
Con la lista {0,1} y el número 5 (generado por parte de mi código, que es demasiado largo para ganar):
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
Pero con la lista {1,0} y el número 2 :
11
10
01
00
Como puede ver, la lista inversa significa el orden inverso.
Echa un vistazo a la estructura, es como un árbol.
Este es el código de golf, por lo que gana el código más corto en bytes
Respuestas:
Jalea , 1 byte
TryItOnline
Átomo incorporado de potencia cartesiana, como un enlace diádico con argumento izquierdo los elementos y argumento derecho el recuento, o como un programa completo con primer argumento los elementos y segundo argumento el recuento.
fuente
Haskell, 20 bytes
Ejemplo de uso:
replicate
realizan
copias del segundo parámetro ymapM id
construye las combinaciones. Por cierto,mapM id
es lo mismo quesequence
, pero 1 byte menos.fuente
MATL , 2 bytes
El poder cartesiano ...
Pruébalo en línea!
fuente
Pyth, 2 bytes
Un programa que toma datos en el formulario
list,number
e imprime una lista de listas.Banco de pruebas
Cómo funciona
fuente
Perl 6 , 15 bytes
Explicación:
fuente
JavaScript (Firefox 30+), 55 bytes
Estoy 99% seguro de que la recursión es la mejor manera de hacerlo en JavaScript.
fuente
Perl, 30 bytes
28 bytes de código +
-nl
bandera.Para ejecutarlo:
Creo que tomar la entrada como una lista de números es lógico para Perl. Sin embargo, si permitimos algo de fantasía y tomamos la entrada con los corchetes y la coma (como se muestra en la pregunta), podemos bajar a 20 bytes :
Explicaciones:
glob
el propósito inicial en Perl es enumerar e iterar a través de los nombres de archivo, pero cuando su argumento contiene llaves, genera combinaciones formadas por un elemento de cada grupo de llaves.-a
autosplit en espacios la entrada, y poner el resultado dentro de la@F
matriz.$"
es el separador de lista: es el separador insertado entre los elementos de una lista dentro de una cadena. Lo configuramos en,
, entonces"{@F"}
produce{.,.}
(si@F
contiene 0 y 1).Entonces
x
es el operador de repetición de cadena (y<>
obtiene una línea de entrada).Y finalmente,
say for
recorre la lista generada porglob
e imprime los elementos.fuente
Mathematica, 6 bytes
Aún peor que Jelly :(
Uso
fuente
Python, 57 bytes
repl.it
Función sin nombre que toma una lista de objetos
o
y un recuento,n
y devuelve una lista de las combinaciones.fuente
Pure Bash, 36
Entrada por parámetros de línea de comandos: la lista es una lista separada por comas entre llaves, por ejemplo:
Tenga en cuenta que la lista de entrada debe citarse para que el shell de llamada no la expanda demasiado pronto.
Ideone .
fuente
bash a.sh "{0,1}" 2
->{0,1}{0,1}
(versión 4.4.5 (1) -release)R ,
5345 bytesPruébalo en línea!
rev
está ahí para cumplir con el orden de clasificación preciso solicitado (que realmente no parece esencial para el problema) y agrega 5 bytes.fuente
rev
por 45 bytes :)Raqueta 123 bytes
Sin golf:
Pruebas:
Salida:
fuente
PHP, 109 bytes
Toma la longitud como primer argumento y la lista como cualquier otro argumento.
Usar como:
Se ejecutará un error fatal "sin memoria" si se le solicita la longitud 0.
fuente
05AB1E ,
21 bytes-1 byte gracias a @Enigma .
Pruébalo en línea.
Entrada como
number\nlist
, salida como lista de listas.Explicación:
fuente
I
aquí.I
porque inicialmente estaba tratando de descubrir cómo tener múltiples entradas y tuve el número y la lista invertidos. Bastante estúpido para mantener elI
allí ... ¡Gracias!