Если задано положительное целое k > 1
и неотрицательное целое число i
, k
создайте кортеж (или k
-мерный вектор) неотрицательных целых чисел. Для каждого k
, отображение из ℕ в ℕ к , должно быть биективен . То есть каждый вход i
должен создавать отдельный кортеж, а каждый возможный кортеж должен создаваться каким-либо вводом i
.
Вы можете написать программу или функцию, принимая ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции и выводя результат через STDOUT (или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out).
Вы можете использовать любой удобный, однозначный, плоский формат списка для вывода.
Ваше решение не должно налагать никаких искусственных ограничений на k
и , i
но вы можете предположить , что они вписываются в родной размер целого вашего языка. По крайней мере, вы должны поддерживать значения вплоть до 255
, хотя даже ваш собственный целочисленный размер меньше этого.
В любом случае 1 < k < 32
, ваш код должен дать результат в считанные секунды (конечно, если ваш ответ не поддерживает такой большой размер из-за предыдущего правила, ограничение корректируется соответствующим образом). Это не должно быть проблемой: это можно решить эту проблему таким образом, что он работает до 2 128 в течение нескольких секунд, но предел есть , чтобы избежать ответов , которые на самом деле итерации от до , чтобы найти результат.i < 231
i
0
i
Пожалуйста, включите в свой ответ описание выбранного вами отображения и обоснование его биективности (это не обязательно должно быть формальным доказательством).
Это код гольф, самый короткий ответ (в байтах) выигрывает.
q~2bW%1$Te]/zWf%2fbp
(обратный порядок ввода)