Associé, mais cela ne nécessite que des nombres entiers positifs et ne doit pas être commutatif
La fonction de couplage Cantor est décrite dans cet article Wikipedia . Il s'agit essentiellement d'une opération telle que lorsqu'elle est appliquée à deux valeurs X et Y, on peut obtenir les valeurs d'origine X et Y compte tenu du résultat.
Votre tâche consiste à concevoir deux fonctions: l'une qui fonctionne X, Y -> Z
et l'autre qui fonctionne Z -> X, Y
. Voici le hic: X, Y -> Z
doit être commutatif. Cela signifie que vous Z -> X, Y
ne pourrez pas déterminer si l'entrée était X, Y
ou Y, X
.
La définition officielle de ce défi serait:
Choisissez un ensemble infini dénombrable S de nombres.
Concevez deux fonctions qui effectuent les tâches suivantes:
- Étant donné une paire de valeurs non ordonnée dans S, renvoyer une valeur dans S
- Étant donné une valeur de retour de la fonction initiale, renvoyez la paire de valeurs non ordonnée qui est évaluée à l'entier d'entrée lorsqu'elle est passée par la première fonction. Je me fiche du comportement de cette fonction inverse si l'entrée n'est pas une valeur de retour de la première fonction.
Exigences
- Le résultat doit être identique entre les exécutions.
{a, a}
est une paire non ordonnée
Remarque: votre réponse est plus susceptible d'obtenir un vote positif de ma part si vous fournissez une preuve, mais je testerai les réponses dès que j'y arriverai et je voterai une fois que je suis assez sûr que cela fonctionne.
1,2
est l'une des paires, 1,3
peut également être une paire potentielle (les deux utilisent 1
)?
f
et son inverse g
, sorted((x, y))
devrait être le même quesorted(g(f(x, y)))