Powiązane, ale wymaga to tylko dodatnich liczb całkowitych i nie musi być przemienne
Funkcję parowania kantora opisano w tym artykule w Wikipedii . Zasadniczo jest to operacja taka, że po zastosowaniu do dwóch wartości X i Y można uzyskać oryginalne wartości X i Y, biorąc pod uwagę wynik.
Twoim zadaniem jest zaprojektowanie dwóch funkcji: jednej, która wykonuje, X, Y -> Z
a drugiej, która wykonuje Z -> X, Y
. Oto haczyk: X, Y -> Z
musi być przemienny. Oznacza to, że Z -> X, Y
nie będzie w stanie ustalić, czy dane wejściowe były X, Y
lub Y, X
.
Formalna definicja tego wyzwania brzmiałaby:
Wybierz policzalny nieskończony zbiór S liczb.
Zaprojektuj dwie funkcje, które wykonują następujące zadania:
- Biorąc pod uwagę nieuporządkowaną parę wartości w S, zwróć wartość w S
- Biorąc pod uwagę wartość zwracaną z funkcji początkowej, zwróć nieuporządkowaną parę wartości, która ocenia na wejściową liczbę całkowitą po przejściu przez pierwszą funkcję. Nie obchodzi mnie zachowanie tej funkcji odwrotnej, jeśli dane wejściowe nie są wartością zwracaną z pierwszej funkcji.
Wymagania
- Wynik powinien być identyczny między seriami.
{a, a}
jest nieuporządkowaną parą
Uwaga: twoja odpowiedź jest bardziej prawdopodobna, jeśli dostaniesz ode mnie głos, jeśli dostarczysz dowód, ale przetestuję odpowiedzi, kiedy do niego dojdę, i głosuję, gdy będę dość pewny, że zadziała.
1,2
jest jedna z tych par, 1,3
może być również potencjalną parą (obie wykorzystują 1
)?
f
i jej odwrotności g
, sorted((x, y))
powinna być taka sama jaksorted(g(f(x, y)))