Biorąc pod uwagę dodatnią liczbę całkowitą k > 1i nieujemną liczbę całkowitą i, wygeneruj k-tuple (lub k-wymiarowy wektor) liczb całkowitych nieujemnych. Dla każdego k, mapa z ℕ do ℕ k , musi być bijective . Oznacza to, że każde wejście ipowinno dawać inną krotkę, a każda możliwa krotka musi być wytworzona przez jakiś wkład i.
Możesz napisać program lub funkcję, pobierając dane wejściowe przez STDIN (lub najbliższą alternatywę), argument wiersza poleceń lub argument funkcji i wypisując wynik przez STDOUT (lub najbliższą alternatywę), wartość zwracaną funkcji lub parametr funkcji (wyjściowej).
Możesz użyć dowolnego wygodnego, jednoznacznego, płaskiego formatu listy wyników.
Rozwiązanie powinno nakładać żadnych sztucznych limitów ki iale można założyć, że pasują one do natywnej wielkości całkowitej Twojego języka. Przynajmniej musisz obsługiwać wartości 255, ale nawet Twoja natywna liczba całkowita jest mniejsza.
Dla każdego 1 < k < 32, Twój kod powinien produkować wynik w ciągu kilku sekund (oczywiście, jeśli odpowiedź nie obsługuje tak duże ze względu na poprzedniej reguły limit zostanie odpowiednio skorygowana). Nie powinno to stanowić problemu: możliwe jest rozwiązanie tego problemu tak, aby działało do 2 128 w ciągu kilku sekund, ale limit polega na unikaniu odpowiedzi, które faktycznie powtarzają się w celu znalezienia wyniku.i < 231i0i
Podaj w odpowiedzi opis wybranego mapowania i uzasadnienie, dlaczego jest ono bijective (nie musi to być formalny dowód).
To jest kod golfowy, wygrywa najkrótsza odpowiedź (w bajtach).
q~2bW%1$Te]/zWf%2fbp(odwrotna kolejność wprowadzania)