Dado um número inteiro positivo k > 1
e um número inteiro não negativo i
, gere um número k
-tuplo (ou k
vetor dimensional) de números inteiros não negativos. Para cada k
, o mapa de ℕ para ℕ k , deve ser bijective . Ou seja, toda entrada i
deve produzir uma tupla diferente, e toda tupla possível deve ser produzida por alguma entrada i
.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento da linha de comando ou argumento da função e emitindo o resultado via STDOUT (ou alternativa mais próxima), valor de retorno da função ou parâmetro da função (saída).
Você pode usar qualquer formato de lista simples, conveniente e inequívoco para a saída.
Sua solução não deve impor limites artificiais k
e, i
mas você pode assumir que eles se encaixam no tamanho inteiro nativo do seu idioma. No mínimo, você deve suportar valores de até 255
, mesmo que o tamanho inteiro nativo seja menor que isso.
De qualquer forma 1 < k < 32
, seu código deve produzir um resultado em questão de segundos (é claro, se sua resposta não suportar esse tamanho devido à regra anterior, o limite será ajustado de acordo). Este deve ser nenhum problema: é possível resolver este desafio de tal forma que ele funciona até 2 128 em poucos segundos, mas o limite é de lá para respostas a evitar que, na verdade, iterate a partir de para encontrar o resultado.i < 231
i
0
i
Inclua na sua resposta uma descrição do mapeamento escolhido e uma justificativa para o motivo de ele ser bijetivo (isso não precisa ser uma prova formal).
Este é o código golf, a resposta mais curta (em bytes) vence.
q~2bW%1$Te]/zWf%2fbp
(ordem inversa de entrada)