Relacionado, mas isso requer apenas números inteiros positivos e não precisa ser comutativo
A função de emparelhamento Cantor é descrita neste artigo da Wikipedia . Essencialmente, é uma operação que, quando aplicada a dois valores X e Y, é possível obter os valores originais X e Y, considerando o resultado.
Sua tarefa é projetar duas funções: uma que executa X, Y -> Z
e a outra que executa Z -> X, Y
. Aqui está o problema: X, Y -> Z
deve ser comutativo. Isso significa que Z -> X, Y
não será possível determinar se a entrada foi X, Y
ou Y, X
.
A definição formal desse desafio seria:
Escolha um conjunto infinito contável de números.
Projete duas funções que executam as seguintes tarefas:
- Dado um par não ordenado de valores em S, retorne um valor em S
- Dado um valor de retorno da função inicial, retorne o par não ordenado de valores que é avaliado para o número inteiro de entrada quando passado pela primeira função. Não me importo com o comportamento dessa função inversa se a entrada não for um valor de retorno da primeira função.
Exigências
- O resultado deve ser idêntico entre as execuções.
{a, a}
é um par não ordenado
Nota: é mais provável que a sua resposta receba um voto positivo se você fornecer uma prova, mas testarei as respostas quando chegar a ela e a votarei assim que tiver certeza de que funciona.
1,2
é um dos pares, 1,3
também pode ser um par em potencial (ambos usam 1
)?
f
e seu inverso g
, sorted((x, y))
deve ser o mesmo quesorted(g(f(x, y)))