Dato un numero intero positivo k > 1
e un numero intero non negativo i
, genera una k
tupla (o k
vettore tridimensionale) di numeri interi non negativi. Per ogni k
, la mappa da ℕ a ℕ k , deve essere biunivoca . Cioè, ogni input i
dovrebbe produrre una tupla diversa e ogni possibile tupla deve essere prodotta da un input i
.
È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN (o l'alternativa più vicina), l'argomento della riga di comando o l'argomento della funzione e producendo il risultato tramite STDOUT (o l'alternativa più vicina), il valore di ritorno della funzione o il parametro della funzione (out).
È possibile utilizzare qualsiasi formato elenco semplice, chiaro e non ambiguo per l'output.
La tua soluzione non dovrebbe imporre limiti artificiali k
e, i
tuttavia, potresti supporre che si adattino alla dimensione intera nativa della tua lingua. Per lo meno, è necessario supportare valori fino a 255
, anche se anche la dimensione intera nativa è inferiore a quella.
In ogni caso 1 < k < 32
, il tuo codice dovrebbe produrre un risultato in pochi secondi (ovviamente, se la tua risposta non supporta così tanto a causa della regola precedente, il limite viene adattato di conseguenza). Questo dovrebbe essere alcun problema: è possibile risolvere questo problema in modo tale che funziona fino a 2 128 nel giro di pochi secondi, ma il limite è lì per risposte Evitare che in realtà iterare da a per trovare il risultato.i < 231
i
0
i
Includi nella risposta una descrizione della mappatura scelta e una giustificazione del motivo per cui è biiettiva (questa non deve essere una prova formale).
Questo è il codice golf, la risposta più breve (in byte) vince.
q~2bW%1$Te]/zWf%2fbp
(ordine di input opposto)