Liên quan, nhưng điều này chỉ yêu cầu số nguyên dương và không phải giao hoán
Hàm ghép nối Cantor được mô tả trong bài viết Wikipedia này . Về cơ bản, đây là một hoạt động sao cho khi nó được áp dụng cho hai giá trị X và Y, người ta có thể thu được các giá trị ban đầu X và Y cho kết quả.
Nhiệm vụ của bạn là thiết kế hai chức năng: một chức năng thực hiện X, Y -> Z
và chức năng khác thực hiện Z -> X, Y
. Đây là cách bắt: X, Y -> Z
phải giao hoán. Điều này có nghĩa là Z -> X, Y
sẽ không thể xác định xem đầu vào là X, Y
hay Y, X
.
Định nghĩa chính thức của thử thách này sẽ là:
Chọn một bộ S số vô hạn có thể đếm được.
Thiết kế hai chức năng thực hiện các nhiệm vụ sau:
- Cho một cặp giá trị không có thứ tự trong S, trả về một giá trị trong S
- Đưa ra một giá trị trả về từ hàm ban đầu, trả về cặp giá trị không có thứ tự ước tính cho số nguyên đầu vào khi được truyền qua hàm đầu tiên. Tôi không quan tâm đến hành vi của hàm nghịch đảo này nếu đầu vào không phải là giá trị trả về từ hàm đầu tiên.
Yêu cầu
- Kết quả phải giống hệt nhau giữa các lần chạy.
{a, a}
là một cặp không có thứ tự
Lưu ý: câu trả lời của bạn có nhiều khả năng nhận được upvote từ tôi nếu bạn cung cấp bằng chứng, nhưng tôi sẽ kiểm tra câu trả lời khi tôi nhận được nó và upvote nó một khi tôi khá chắc chắn rằng nó hoạt động.
1,2
là một trong các cặp, 1,3
cũng có thể là một cặp tiềm năng (cả hai sử dụng 1
)?
f
và nghịch đảo của nó g
, sorted((x, y))
phải giống nhưsorted(g(f(x, y)))