Relacionado, pero esto solo requiere enteros positivos y no tiene que ser conmutativo
La función de emparejamiento de Cantor se describe en este artículo de Wikipedia . Esencialmente, es una operación tal que cuando se aplica a dos valores X e Y, uno puede obtener los valores originales X e Y dado el resultado.
Su tarea es diseñar dos funciones: una que realiza X, Y -> Z
y otra que realiza Z -> X, Y
. Aquí está el truco: X, Y -> Z
debe ser conmutativo. Esto significa que Z -> X, Y
no podrá determinar si la entrada fue X, Y
o Y, X
.
La definición formal de este desafío sería:
Elija un conjunto infinito contable S de números.
Diseñe dos funciones que realicen las siguientes tareas:
- Dado un par de valores desordenados en S, devuelve un valor en S
- Dado un valor de retorno de la función inicial, devuelve el par de valores desordenados que se evalúa en el entero de entrada cuando se pasa por la primera función. No me importa el comportamiento de esta función inversa si la entrada no es un valor de retorno de la primera función.
Requisitos
- El resultado debe ser idéntico entre ejecuciones.
{a, a}
es un par desordenado
Nota: es más probable que reciba una respuesta positiva de usted si proporciona una prueba, pero probaré las respuestas cuando llegue a ella y la votaré una vez que esté bastante seguro de que funciona.
1,2
es uno de los pares, 1,3
también puede ser un par potencial (ambos usan 1
)?
f
y su inverso g
, sorted((x, y))
debería ser lo mismo quesorted(g(f(x, y)))