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 i
nombre th dans la séquence détermine combien 3
il y a de s avant le i
th 2
et après tout 2
s précédent . Donc, puisque la séquence commence par un, 3
la séquence doit commencer 3 3 3 2
et comme il y a trois 3
s au début de la séquence, la sous-séquence 3 3 3 2
doit se répéter trois fois. Après cela, vous atteignez 3 3 2
parce 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=4
is 3/1 = 3
et at i=15
it est 11/4 = 2.75
.
Soyons général
Étant donné les nombres n
et k
nous pouvons faire une séquence similaire qui commence par n
et tout comme la séquence d'origine décrite, le nombre à l'index i
détermine combien de n
s apparaissent avant le i
th k
et après tout k
s 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 n
et k
déterminer une séquence telle que décrite ci - dessus et i
est 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 i
est i ≥ n
.
Avec les trois nombres sortent le rapport de n
s à k
s 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/837
ou 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/2
et 11:2
sont acceptables mais 22/4
ne 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.