Faça um código que use uma lista e um número como entrada e gere todas as combinações possíveis com o comprimento do número. Por exemplo, com a lista {0,1} e o número 2 :
00
01
10
11
Seu programa não precisa esperar caracteres duas ou mais vezes na lista, como {0,0,0,0,0,1,1,5,5}
Certifique-se de imprimir as combinações ordenadas, na ordem da lista:
Com a lista {0,1} e o número 5 (gerado por parte do meu código, que é muito longo para ganhar):
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
Mas com a lista {1,0} e o número 2 :
11
10
01
00
Como você pode ver, lista invertida significa ordem invertida.
Dê uma olhada na estrutura, é como uma árvore.
Isso é código-golfe, então o código mais curto em bytes vence!
Respostas:
Geléia , 1 byte
TryItOnline
Átomo embutido no poder cartesiano, como um elo diádico com o argumento esquerdo dos itens e o argumento direito da contagem, ou como um programa completo com o primeiro argumento dos itens e o segundo argumento a contagem.
fonte
Haskell, 20 bytes
Uso exaple:
replicate
fazn
cópias do segundo parâmetro emapM id
cria as combinações. Btw,mapM id
é o mesmo quesequence
, mas 1 byte a menos.fonte
MATL , 2 bytes
Poder cartesiano construído ...
Experimente online!
fonte
Pitão, 2 bytes
Um programa que recebe entrada no formulário
list,number
e imprime uma lista de listas.Suíte de teste
Como funciona
fonte
Perl 6 , 15 bytes
Explicação:
fonte
JavaScript (Firefox 30 ou superior), 55 bytes
Tenho 99% de certeza de que a recursão é a melhor maneira de fazer isso em JavaScript.
fonte
Perl, 30 bytes
28 bytes de código +
-nl
sinalizador.Para executá-lo:
Eu acho que tomar a entrada como uma lista de números é lógico para Perl. No entanto, se permitirmos alguma fantasia e pegar a entrada com colchetes e vírgula (como mostrado na pergunta), podemos reduzir para 20 bytes :
Explicações:
glob
o objetivo inicial no Perl é listar e iterar por meio de nomes de arquivos, mas quando seu argumento contém colchetes, ele gera combinações formadas por um elemento de cada grupo de colchetes.-a
divisão automática em espaços da entrada e coloque o resultado dentro da@F
matriz.$"
é o separador de lista: é o separador inserido entre os elementos de uma lista dentro de uma string. Nós configuramos para,
, então"{@F"}
produz{.,.}
(se@F
contém 0 e 1).Então
x
é o operador de repetição de string (e<>
obtém uma linha de entrada).E, finalmente,
say for
percorre a lista geradaglob
e imprime os elementos.fonte
Mathematica, 6 bytes
Ainda pior do que Jelly :(
Uso
fonte
Python, 57 bytes
repl.it
Função sem nome, obtendo uma lista de objetos
o
e uma contagemn
e retornando uma lista das combinações.fonte
Pure Bash, 36
Entrada por parâmetros de linha de comando - A lista é uma lista separada por vírgula entre chaves, por exemplo:
Observe que a lista de entrada precisa ser citada para que o shell de chamada não a expanda cedo demais.
Ideone .
fonte
bash a.sh "{0,1}" 2
->{0,1}{0,1}
(versão 4.4.5 (1) -release)R ,
5345 bytesExperimente online!
rev
está em conformidade com a ordem de classificação precisa solicitada (o que realmente não parece essencial para o problema) e adiciona 5 bytes.fonte
rev
para 45 bytes :)Raquete 123 bytes
Ungolfed:
Teste:
Resultado:
fonte
PHP, 109 bytes
Leva o comprimento como o primeiro argumento e a lista como qualquer outro argumento.
Use como:
Será executado um erro fatal "falta de memória" se for solicitado o comprimento 0.
fonte
05AB1E ,
21 bytes-1 byte graças ao @Enigma .
Experimente online.
Entrada como
number\nlist
, saída como lista de listas.Explicação:
fonte
I
aqui.I
porque inicialmente estava tentando descobrir como ter várias entradas e teve o número e a lista invertidos. Muito estúpido para manter oI
lá .. Obrigado!