introduction
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.
Le premier défi de cette série est de sortir a (n) pour un n donné en entrée, où a (n) est A064413 , également connu sous le nom de séquence ECG parce que le graphique de ses valeurs ressemble à un électrocardiogramme (d'où le " Comment cela sentir " référence). Les propriétés intéressantes de cette séquence sont que tous les entiers positifs apparaissent exactement une fois. Une autre caractéristique notable est que tous les nombres premiers apparaissent dans l'ordre croissant.
Tâche
Étant donné une entrée entière n, la sortie a (n).
est défini comme:
- pour , est le plus petit nombre non utilisé qui partage un facteur avec
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 | 3
20 | 11
50 | 49
123 | 132
1234 | 1296
3000 | 3122
9999 | 10374
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 (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
Note finale
Voir cette question PP&CG connexe .
#>¹↑¡§ḟȯ←⌋→`-Nḣ2
et ici!¡§ḟȯ←⌋→`-Nḣ2
ferait ( Essayez-le ). La définition de "doublon" n'est pas "est exactement la même que". Je laisserai à d'autres le soin de décider car je ne veux pas marteler cette fermeture car j'ai peut-être manqué quelque chose.a(n)
actions d' un facteur autre que 1 aveca(n-1)
, puisque toutes les actions numéro 1 en tant que facteur. De plus, ma réponse peut-elle être «indexée 2», oùa(2)
est 1,a(3)
est 2, et ainsi de suite?Réponses:
05AB1E , 25 octets
0 indexé
Explication:
la source
Haskell ,
66 6564 octetsEssayez-le en ligne!
la source
Haskell , 60 octets
Essayez-le en ligne!
Zéro indexé; pourrait économiser quatre octets si la série commençait par 2 (un peu (-1) -indexé, mais sans que la valeur de -1 soit définie). Construit la liste infinie en maintenant paresseusement la liste des numéros inutilisés.
la source
Data.List
et utilisez à ladelete x
place defilter(/=x)
. Si cela doit fonctionner pour des arguments volumineux, une telle optimisation deviendra rapidement nécessaire.delete
est la chose raisonnable à faire ici, mais dans le code-golf, cela nous est égal. Je mentionne parfois des variantes plus efficaces, lorsque la différence est spectaculaire, ou autrement intéressante. Ici, ce n'est pas trop mal: TIO peut calculer tous les cas de test en moins de 10 secondes.Python 2 , 104 octets
Cela utilise une indexation basée sur 0.
Essayez-le en ligne!
la source
Rubis, 86 octets
Cela fonctionne cependant pour des entrées aussi faibles que 10.
Voici une version avec mémorisation de 102 octets qui s'exécute dans un délai acceptable:
la source
LANGUE DE LA MACHINE (X86, 32 bits) + bibliothèque de langage C fonctions malloc () / free (), octets 325
Ci-dessus gcd et la fonction ... Ce code d'assemblage ci-dessous génère les fonctions et le programme de test:
Les resultats:
Il est possible que des bogues et une mauvaise copie soient passés ...
la source
Perl 6,
848073695049 octets(Indexé 0)
Merci à cette réponse pour quelques astuces.
Merci à ASCII uniquement pour avoir rasé un octet.
la source
...
? Cela facilite beaucoup les séquences comme celle-ci. Par exemple, vousmy@a=1,2;push @a,operation while condition
pouvez l'être1,2,{operation}...condition
. Avec quelques autres golfs, cela peut être aussi bas que 49 octets.first
.APL (NARS), caractères 119, octets 238
ce test, il faut 1m: 49s ici:
la source
Java (JDK) ,
161155152151 octetsUn octet enregistré en changeant de
int[]
suivi pour tirer parti de l'existantBigInteger
!Essayez-le en ligne!
la source
Gaia , 27 octets
Essayez-le en ligne!
Indexation basée sur 1.
S'exécute assez lentement, car il essaie chaque entier jusqu'à ce qu'il trouve
a(n)
.la source