È banalmente possibile creare una funzione biiettiva da (l'insieme di tutti i numeri interi) a (ad esempio la funzione di identità).Z
È anche possibile creare una funzione biiettiva da a (l'insieme di tutte le coppie di 2 numeri interi; il prodotto cartesiano di e ). Ad esempio, potremmo prendere il reticolo che rappresenta i punti interi su un piano 2D, disegnare una spirale da 0 verso l'esterno e quindi codificare coppie di numeri interi come distanza lungo la spirale quando interseca quel punto.Z 2Z
(Una funzione che esegue questa operazione con i numeri naturali è nota come funzione di associazione .)
In effetti, esiste una famiglia di queste funzioni biiettive:
La sfida
Definire una famiglia di funzioni (dove è un numero intero positivo) con la proprietà che mappa biiettivamente numeri interi su -tuple di numeri interi.k f k ( x ) k
La tua richiesta dovrebbe, dati gli input e , restituire .x f k ( x )
Questo è code-golf , quindi vince la risposta valida più breve (misurata in byte).
specificazioni
- Qualsiasi famiglia può essere utilizzata purché soddisfi i criteri di cui sopra.
- Ti invitiamo ad aggiungere una descrizione di come funziona la tua famiglia di funzioni, nonché uno snippet per calcolare l'inverso della funzione (questo non è incluso nel conteggio dei byte).
- Va bene se la funzione inversa è incomprensibile, purché sia possibile dimostrarla, la funzione è biiettiva.
- È possibile utilizzare qualsiasi rappresentazione adatta per numeri interi e elenchi di numeri interi firmati per la propria lingua, ma è necessario consentire che gli input alla funzione non siano associati.
- Devi solo supportare valori di fino a 127.

kexanziché numeri interi?