Dado un número entero positivo k > 1
y un número entero no negativo i
, genera una k
tupla (o k
vector dimensional) de números enteros no negativos. Para cada k
, el mapa de ℕ a ℕ k , debe ser biyectivo . Es decir, cada entrada i
debe producir una tupla diferente y cada tupla posible debe ser producida por alguna entrada i
.
Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y generando el resultado a través de STDOUT (o la alternativa más cercana), el valor de retorno de la función o el parámetro de función (out).
Puede utilizar cualquier formato de lista plana conveniente, inequívoco para la salida.
Su solución no debería imponer límites artificiales en k
y i
pero puede suponer que encajan en tamaño entero nativo de su lengua. Por lo menos, debe admitir valores hasta 255
, sin embargo, incluso su tamaño entero nativo es más pequeño que eso.
En cualquier caso 1 < k < 32
, su código debería producir un resultado en cuestión de segundos (por supuesto, si su respuesta no es tan grande debido a la regla anterior, el límite se ajusta en consecuencia). Esto debería ser ningún problema: es posible resolver este desafío tal que funciona hasta 2 128 en unos pocos segundos, pero el límite está ahí para respuestas Evita que en realidad iterate de que para encontrar el resultado.i < 231
i
0
i
Incluya en su respuesta una descripción de su mapeo elegido y una justificación de por qué es biyectivo (esto no necesita ser una prueba formal).
Este es el código de golf, gana la respuesta más corta (en bytes).
q~2bW%1$Te]/zWf%2fbp
(orden de entrada opuesto)