Adapté de cette énigme FiveThirtyEight .
Contexte
Examinez la séquence infinie suivante:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Disons que la séquence est indexée sur 1. Le inombre th dans la séquence détermine combien 3il y a de s avant le ith 2et après tout 2s précédent . Donc, puisque la séquence commence par un, 3la séquence doit commencer 3 3 3 2et comme il y a trois 3s au début de la séquence, la sous-séquence 3 3 3 2doit se répéter trois fois. Après cela, vous atteignez 3 3 2parce que le quatrième numéro de la séquence est 2.
L'énigme FiveThirtyEight demande la limite des rapports de trois à deux (que je ne gâcherai pas ici) mais vous pouvez également demander quel est le rapport cumulatif après l'index i. Par exemple, le rapport à i=4is 3/1 = 3et at i=15it est 11/4 = 2.75.
Soyons général
Étant donné les nombres net knous pouvons faire une séquence similaire qui commence par net tout comme la séquence d'origine décrite, le nombre à l'index idétermine combien de ns apparaissent avant le ith ket après tout ks précédent .
Exemples:
n=2, k=5 donne la séquence 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0 donne 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3 donne 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
Le défi
Écrivez une fonction / un programme et procédez comme suit. Prenez comme entrée:
- un entier positif
n - un entier non négatif
k ≠ n - un entier positif
i > n
Les deux premières entrées net kdéterminer une séquence telle que décrite ci - dessus et iest un index. J'utilise l'indexation 1 dans les exemples, mais vous avez la liberté d'utiliser l'indexation 0 ou 1. Si indexé 0, la restriction sur iest i ≥ n.
Avec les trois nombres sortent le rapport de ns à ks dans la séquence jusqu'à et y compris le nombre à l'index i. Le format de la sortie peut être soit une valeur décimale avec au moins 5 chiffres de précision, soit une valeur exacte sous la forme d'un rapport comme 3524/837ou 3524:837.
Sous forme décimale, le dernier chiffre peut être arrondi comme vous le souhaitez. Les zéros de fin et les espaces sont autorisés.
Dans l'une ou l'autre des formes de chaîne, les deux nombres doivent être normalisés afin qu'ils soient coprimes. Par exemple, si le rapport était de 22/4, 11/2et 11:2sont acceptables mais 22/4ne le sont pas.
Exemples
n k i output
2 4 15 2.75 or 11/4
6 0 666 5.1101 or 557:109
50 89 64 63 or 63:1
3 2 1000 2.7453 or 733/267
9 12 345 9.4545 or 104/11
C'est le code golf par langue, donc le code le plus court dans chaque langue est le gagnant.
/ou :ajoute simplement une complication inutile au défi.