Verwandte, aber dies erfordert nur positive ganze Zahlen und muss nicht kommutativ sein
Die Cantor Pairing-Funktion wird in diesem Wikipedia-Artikel beschrieben . Im Wesentlichen handelt es sich um eine Operation, bei der bei Anwendung auf zwei Werte X und Y die ursprünglichen Werte X und Y erhalten werden können, wenn das Ergebnis angegeben wird.
Ihre Aufgabe ist es zwei Funktionen zu entwerfen: eine , die führt X, Y -> Z
und die andere , welche führt Z -> X, Y
. Hier ist der Haken: X, Y -> Z
Muss kommutativ sein. Dies bedeutet, dass Z -> X, Y
nicht festgestellt werden kann, ob die Eingabe X, Y
oder war Y, X
.
Die formale Definition dieser Herausforderung wäre:
Wählen Sie eine abzählbare unendliche Menge S von Zahlen.
Entwerfen Sie zwei Funktionen, die die folgenden Aufgaben ausführen:
- Geben Sie bei einem ungeordneten Wertepaar in S einen Wert in S zurück
- Wenn Sie einen Rückgabewert von der Anfangsfunktion erhalten, geben Sie das ungeordnete Wertepaar zurück, das bei der Übergabe durch die erste Funktion als Eingabe-Ganzzahl ausgewertet wird. Das Verhalten dieser Umkehrfunktion ist mir egal, wenn die Eingabe kein Rückgabewert aus der ersten Funktion ist.
Bedarf
- Das Ergebnis sollte zwischen den Läufen identisch sein.
{a, a}
ist ein ungeordnetes Paar
Hinweis: Ihre Antwort wird mit größerer Wahrscheinlichkeit von mir positiv bewertet, wenn Sie einen Beweis vorlegen. Ich werde die Antworten jedoch testen, wenn ich sie erhalte und positiv bewerten, sobald ich mir ziemlich sicher bin, dass sie funktioniert.
1,2
ist eines der Paare, 1,3
kann auch ein potentielles Paar sein (beide verwenden 1
)?
f
und ihre Inverse g
, sorted((x, y))
sollte gleich seinsorted(g(f(x, y)))