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!