introduction
La séquence ECG commence par 1 et 2, puis la règle est que le terme suivant est le plus petit entier positif qui ne figure pas déjà dans la séquence et dont le facteur commun avec le dernier terme est supérieur à 1 (ils ne sont pas des nombres premiers).
Les premiers termes sont:
1, 2, 4, 6, 3, 9, 12, 8, 10, 5, 15, ...
C'est ce qu'on appelle l'électrocardiogramme parce que le graphique de ses termes est assez similaire à un électrocardiogramme.
C'est la séquence A064413 dans l'OEIS .
Défi
Vous devez écrire une fonction qui prend un entier n en entrée et affiche combien de n premiers termes de la séquence sont supérieurs à n .
Comme la règle de la séquence commence par le troisième terme, l'entier d'entrée doit être supérieur ou égal à 3. Par exemple, pour une entrée donnée, 10
la sortie est 1
due au fait que le 7e terme est 12
et qu'aucun des dix premiers termes ne dépasse 10.
Cas de test
3 -> 1
10 -> 1
100 -> 9
1000 -> 70
Règles
- Pour les entiers inférieurs à 3, la fonction peut sortir 0 ou un code d'erreur.
- Pas d'autres règles particulières sauf: c'est du golf de code, le plus court sera le mieux!
1
étant le 0ème terme de la séquence et donc faire, par exemple,15
le 10ème terme, plutôt que5
?Réponses:
Gelée ,
201918 octetsCeci est un programme complet.
Essayez-le en ligne!
Comment ça fonctionne
Notez que la séquence générée est[ 1 , 0 , 2 , 4 , 6 , 3 , 9 , 12 , 8 , 10 , 5 , 15 , … ] . Étant donné que l'appel de la liaison d'assistance n fois génère une séquence de longueur n + 1 , le 0 est pratiquement ignoré.
la source
Perl 6 ,
66635958 octets-4 octets grâce à Jo King
Essayez-le en ligne!
Trop lent sur TIO pour n = 1000.
la source
first &f,1..*
peut être réécrit+(1...&f)
, votre astuce de jonction a aidé après tout.JavaScript (ES6),
107106105 octetsEssayez-le en ligne!
Comment?
a.indexOf(k)
est égal à:a.indexOf(k) + C(k, a[0])
la source
Haskell,
8982 octetsEdit: -7 octets grâce à @ H.PWiz
Essayez-le en ligne!
la source
Husk , 16 octets
Essayez-le en ligne!
Explication
la source
MATL , 29 octets
Essayez-le en ligne!
Explication:
la source
GE:
)?while
boucle serait beaucoup plus compliquée en MATL, donc j'essayais de l'éviter.APL (Dyalog Unicode) , 39 octets SBCS
-2 octets grâce à ngn, -1 octet en utilisant une vérification conditionnelle appropriée.
Essayez-le en ligne!
la source
⍣
transmet son propre argument de gauche à la fonction opérande, donc il n'y a pas besoin de∘
. aussi,⍵
ne se liera pas avec la chose à droite car elle commence par une fonction (⍳
), donc il n'y a pas besoin de⊢
.JavaScript,
939187 octetsLance une erreur de débordement pour
0
ou1
, produit0
pour2
.Essayez-le en ligne
la source
APL (NARS), caractères 121, octets 242
tester en moins d'une minute ici en temps d'exécution:
Naturellement, il n'y a pas de contrôle pour le type et la portée ...
la source
Japt,
2321 octetsEssayez-le
la source
Python 3 , 153 octets
Essayez-le en ligne! (Avertissement: prend environ 30 secondes pour évaluer)
la source