Связано, но это требует только натуральных чисел и не должно быть коммутативным
Функция сопряжения Кантора описана в этой статье Википедии . По сути, это такая операция, что, когда она применяется к двум значениям X и Y, можно получить исходные значения X и Y с учетом результата.
Ваша задача - разработать две функции: одну, которая выполняет, X, Y -> Z
а другую, которая выполняет Z -> X, Y
. Вот подвох: X, Y -> Z
должен быть коммутативным. Это означает, что Z -> X, Y
вы не сможете определить, был ли ввод X, Y
или Y, X
.
Формальное определение этого вызова будет:
Выберите счетное бесконечное множество S чисел.
Разработайте две функции, которые выполняют следующие задачи:
- Если дана неупорядоченная пара значений в S, вернуть значение в S
- Получив возвращаемое значение из исходной функции, верните неупорядоченную пару значений, которая вычисляется во входное целое число при прохождении через первую функцию. Меня не волнует поведение этой обратной функции, если входные данные не являются возвращаемым значением из первой функции.
Требования
- Результат должен быть одинаковым между пробегами.
{a, a}
неупорядоченная пара
Примечание: ваш ответ с большей вероятностью получит от меня отклик, если вы предоставите доказательство, но я проверю ответы, когда доберусь до него, и опрошу его, как только буду уверен, что это сработает.
1,2
одна из пар, 1,3
также может быть потенциальной парой (обе используют 1
)?
f
и ее обратное g
, sorted((x, y))
должно быть таким же, какsorted(g(f(x, y)))