Liste todas as combinações com substituição (ou combinações com repetição) do tamanho k de um conjunto de n elementos.
Uma combinação com substituição é um conjunto múltiplo não ordenado de que todos os elementos também estão no conjunto de n elementos. Observe que:
- Não é ordenado. Portanto, um conjunto impresso anteriormente com um pedido diferente não deve ser impresso novamente.
- É um multiset. O mesmo elemento pode (mas não é necessário) aparecer mais de uma vez. Essa é a única diferença entre uma combinação com substituição e uma combinação normal.
- O conjunto deve ter exatamente k elementos.
Como alternativa, também é um subconjunto tamanho- k do multiset que contém cada um dos n elementos k vezes.
A entrada deve ser n e k , onde os elementos são os primeiros n números inteiros positivos ou não negativos, ou os n elementos e k , onde você pode assumir que os n elementos são todos diferentes um do outro.
A saída deve ser uma lista de todas as combinações com substituição com tamanho k do conjunto fornecido. Você pode imprimi-los e os elementos em cada um deles em qualquer ordem.
Você não pode usar os componentes internos gerando combinações com substituição. Mas você pode usar builtins para gerar combinações normais, permutações, tuplas, etc.
Este é o código-golfe, o código mais curto vence.
Exemplo
Input: 4 2
Output: [0 0] [0 1] [0 2] [0 3] [1 1] [1 2] [1 3] [2 2] [2 3] [3 3]