Introduction (peut être ignoré)
Mettre tous les nombres positifs dans son ordre régulier (1, 2, 3, ...) est un peu ennuyeux, n'est-ce pas? Voici donc une série de défis autour des permutations (remaniements) de tous les nombres positifs. Il s'agit du quatrième défi de cette série (liens vers les premier , deuxième et troisième défis).
Dans ce défi, nous explorerons non pas une permutation des nombres naturels, mais un monde entier de permutations!
En 2000, Clark Kimberling a posé un problème dans le 26 e numéro de Crux Mathematicorum , une revue scientifique de mathématiques publiée par la Société mathématique du Canada. Le problème était:
Est-ce que chaque entier positif se produit exactement une fois dans cette séquence?
En 2004, Mateusz Kwasnicki a fourni une preuve positive dans le même journal et en 2008, il a publié une preuve plus formelle et (par rapport à la question d'origine) plus générale. Il a formulé la séquence avec les paramètres et :
Il a prouvé que pour tout tel que est irrationnel, la séquence est une permutation des nombres naturels. Puisqu'il existe un nombre infini de valeurs et pour lesquelles cela est vrai, il s'agit véritablement d'un monde entier de permutations des nombres naturels. Nous nous en tiendrons à l'original , et pour ces paramètres, la séquence peut être trouvée comme A050000dans l'OEIS. Ses 20 premiers éléments sont:
1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15
Puisqu'il s'agit d'un défi de "séquence pure", la tâche consiste à sortir pour un donné en entrée, où est A050000 .
Tâche
Étant donné une entrée entière , sortie au format entier, où:
Remarque: l'indexation basée sur 1 est supposée ici; vous pouvez utiliser une indexation basée sur 0, donc , etc. Veuillez le mentionner dans votre réponse si vous choisissez de l'utiliser.
Cas de test
Input | Output
---------------
1 | 1
5 | 2
20 | 15
50 | 165
78 | 207
123 | 94
1234 | 3537
3000 | 2245
9999 | 4065
29890 | 149853
Règles
- L'entrée et la sortie sont des entiers (votre programme devrait au moins prendre en charge l'entrée et la sortie dans la plage de 1 à 32 767)
- Une entrée non valide (0, flottants, chaînes, valeurs négatives, etc.) peut entraîner une sortie imprévue, des erreurs ou un comportement (non) défini.
- Les règles d'E / S par défaut s'appliquent.
- Les failles par défaut sont interdites.
- Il s'agit de code-golf , donc les réponses les plus courtes en octets l'emportent
Réponses:
Japt ,
1514 octets1 indexé.
Essayez-le
la source
JavaScript (ES6),
55 5150 octets1 octet enregistré grâce à @EmbodimentofIgnorance
1 octet enregistré grâce à @tsh
Essayez-le en ligne!
la source
n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
Gelée , 15 octets
Un programme complet acceptant l'entier,
n
(basé sur 1), de STDIN qui imprime le résultat.Essayez-le en ligne!
Comment?
la source
05AB1E ,
1615 octetsEnregistré 1 octet grâce à Kevin Cruijssen .
0 indexé.
Essayez-le en ligne!
Explication
Utilisation
n=1
comme exemplela source
Perl 6 , 49 octets
-2 octets grâce à nwellnof
Essayez-le en ligne!
Renvoie l'élément indexé 0 dans la séquence. Vous pouvez changer cela en 1 indexé en remplaçant les éléments de départ par au
0,1
lieu de1,3
Explication:
la source
J ,
4740 octetsEssayez-le en ligne!
non golfé
La traduction directe de la définition en J. Elle se construit de bas en haut en utilisant
^:
pour itérer à partir de la valeur de départ le nombre de fois requis.la source
Java 10,
12099 octetsEssayez-le en ligne.
Explication:
la source
Haskell ,
6765 octetsEssayez-le en ligne!
Utilise l'indexation basée sur 0.
EDIT: enregistré 2 octets en utilisant
elem
au lieu denotElem
et en changeant les conditionsla source
Gelée , 21 octets
Essayez-le en ligne!
Un lien monadique qui prend l'index zéron comme argument et retourne a ( n ) .
la source
Rubis ,
545248 octetsEssayez-le en ligne!
la source
C ++ (gcc) ,
189octets-9 octets au petit golf
Essayez-le en ligne!
Calcule la séquence jusqu'à
n
, puis renvoie l'élément souhaité. Lent pour les indices plus grands.la source
Python 2 , 66 octets
Essayez-le en ligne!
Utilise une indexation à base zéro. Le lambda ne fait guère plus que de construire récursivement la séquence et de revenir dès que l'index requis est atteint.
la source
Stax , 14 octets
Exécuter et déboguer
Zéro indexé.
la source
Wolfram Language (Mathematica) , 63 octets
Essayez-le en ligne!
Ceci est indexé 0
(dans TIO j'ai ajouté -1 dans chaque cas de test)
la source
Python 2 , 62 octets
Essayez-le en ligne!
Retourne
True
poura(0)
. 0 indexé.la source
Python 3 ,
105103100 1009583 octets-2 octets grâce à agtoever
-12 octets grâce à ArBo
Essayez-le en ligne!
la source
while len(s)<=n
et remplacer les i avec-1
. Cela devrait raser l'un des deux personnages.if
de lawhile
boucle pour autoriser la doublure de cette boucleGaia ,
2220 octetsEssayez-le en ligne!
Index basé sur 0.
Nous remercions Shaggy pour l'approche
;D
la source
Haskell , 55 octets
Essayez-le en ligne!
La méthode de génération de listes de golf de user1472751 .
Même longueur:
Essayez-le en ligne!
la source
Lua , 78 octets
Essayez-le en ligne!
la source
z
variable et en changeant l'instruction if en ternaire