Il est bien connu, dans le domaine des mathématiques qui étudient l'infini, que le produit cartésien de toute quantité finie d'ensembles dénombrables est également dénombrable .
Votre tâche consiste à écrire deux programmes pour l'implémenter, un pour mapper de la liste à l'entier, un pour mapper de l'entier à la liste.
Votre fonction doit être bijective et déterministe, ce qui signifie qu'elle 1
sera toujours mappée sur une certaine liste, et 2
sera toujours mappée sur une autre certaine liste, etc.
Plus tôt , nous avons mappé des entiers à une liste composée uniquement de 0
et 1
.
Cependant, maintenant la liste se composera de nombres non négatifs.
Spécifications
- Programme / fonction, format d'entrée / sortie raisonnable.
- Que les entiers mappés commencent
1
ou commencent à partir de0
vous est votre choix, ce qui signifie qu'il0
n'a pas à (mais peut) correspondre à quoi que ce soit. - Le tableau vide
[]
doit être codé. - L'entrée / sortie peut être dans n'importe quelle base.
- Le partage de code entre les deux fonctions est autorisé .
Notation
C'est du code-golf . Le score le plus bas l'emporte.
Le score est la somme des longueurs (en octets) des deux programmes / fonctions.
la source
N^inf -> N
?Réponses:
Gelée ,
1816 octetsListe en entier,
108 octetsMappe les listes d'entiers non négatifs sur des entiers positifs. Essayez-le en ligne!
Entier à lister, 8 octets
Mappe des entiers positifs à des listes d'entiers non négatifs. Essayez-le en ligne!
Contexte
Soit p 0 , p 1 , p 2 , ⋯ la suite de nombres premiers dans l'ordre croissant.
Pour chaque liste d'entiers non négatifs A: = [a 1 , ⋯, a n ] , nous mappons A à p 0 z (A) p 1 a 1 ⋯ p n a n , où z (A) est le nombre de arrière zéros de A .
Inverser la carte ci-dessus en toute simplicité. Pour un entier positif k , nous le factorisons uniquement comme le produit de puissances premières consécutives n = p 0 α 0 p 1 α 1 ⋯ p n α n , où α n > 0 , puis reconstruisons la liste comme [α 1 , ⋯, α n ] , en ajoutant α 0 zéros.
Comment ça fonctionne
Liste en entier
Entier à lister
Exemple de sortie
Les cent premiers entiers positifs correspondent aux listes suivantes.
la source
Python 2, 88 octets
Démo:
Python 2, 130 octets
Voici une solution plus «efficace» où la longueur de bits de la sortie est linéaire dans la longueur de bits de l'entrée plutôt qu'exponentielle.
la source
e
pour être l'inverse pourd
:e=lambda l,i=0:l!=d(i)and-~e(l,i+1)
.Python 2,
204202 octetsFonctionne en appliquant à plusieurs reprises une bijection Z + x Z + <-> Z +, précédée de la longueur de la liste.
la source
e
est une liste en entier,d
est un entier en liste (encoder / décoder).Rétine, 17 + 23 = 40 octets
De la liste à l'entier:
Essayez-le en ligne!
De l'entier à la liste:
Essayez-le en ligne!
Utilise l'algorithme de Kaseorg .
la source