Es bien sabido, en el campo de las matemáticas que estudian el infinito, que el producto cartesiano de cualquier cantidad finita de conjuntos contables también es contable .
Su tarea es escribir dos programas para implementar esto, uno para mapear de lista a entero, uno para mapear de entero a lista.
Su función debe ser biyectiva y determinista, lo que significa que 1
siempre se asignará a una lista determinada, y 2
siempre se asignará a otra lista determinada, etc.
Anteriormente , asignamos enteros a una lista que consta solo de 0
y 1
.
Sin embargo, ahora la lista consistirá en números no negativos.
Especificaciones
- Programa / función, formato de entrada / salida razonable.
- Si usted decide si los enteros mapeados comienzan
1
o comienzan desde0
su elección, lo que significa que0
no tiene que (pero puede) mapearse a nada. - La matriz vacía
[]
debe estar codificada. - La entrada / salida puede estar en cualquier base.
- Se permite compartir código entre las dos funciones .
Puntuación
Este es el código de golf . La puntuación más baja gana.
La puntuación es la suma de las longitudes (en bytes) de los dos programas / funciones.
code-golf
set-theory
Monja permeable
fuente
fuente
N^inf -> N
?Respuestas:
Jalea ,
1816 bytesLista a entero,
108 bytesAsigna listas de enteros no negativos a enteros positivos. Pruébalo en línea!
Entero para enumerar, 8 bytes
Asigna enteros positivos a listas de enteros no negativos. Pruébalo en línea!
Antecedentes
Sea p 0 , p 1 , p 2 , ⋯ la secuencia de números primos en orden ascendente.
Para cada lista de enteros no negativos A: = [a 1 , ⋯, a n ] , asignamos A a p 0 z (A) p 1 a 1 ⋯ p n a n , donde z (A) es el número de ceros de A .
Invertir el mapa anterior en forma directa. Para un entero positivo k , lo factorizamos únicamente como el producto de potencias primarias consecutivas n = p 0 α 0 p 1 α 1 ⋯ p n α n , donde α n > 0 , luego reconstruimos la lista como [α 1 , ⋯, α n ] , agregando α 0 ceros.
Cómo funciona
Lista al número entero
Entero para enumerar
Salida de ejemplo
Los primeros cien enteros positivos se asignan a las siguientes listas.
fuente
Python 2, 88 bytes
Manifestación:
Python 2, 130 bytes
Aquí hay una solución más "eficiente" donde la longitud de bits de la salida es lineal en la longitud de bits de la entrada en lugar de exponencial.
fuente
e
a la inversa parad
:e=lambda l,i=0:l!=d(i)and-~e(l,i+1)
.Python 2,
204202 bytesFunciona aplicando repetidamente una biyección Z + x Z + <-> Z +, precedida por la longitud de la lista.
fuente
e
es listar a entero,d
es entero a listar (codificar / decodificar).Retina, 17 + 23 = 40 bytes
De la lista al número entero:
Pruébalo en línea!
Del entero a la lista:
Pruébalo en línea!
Utiliza el algoritmo de Kaseorg .
fuente