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.Réponses:
Husk , 16 octets
Essayez-le en ligne!
Prend les entrées dans le même ordre que les cas de test. Produit un nombre rationnel. J'ai l'impression que cela a trop d'exposants, mais je ne sais pas comment m'en débarrasser ...
Explication
la source
Python 3 ,
94928987 octetsEssayez-le en ligne!
Crédits
la source
.count(n)
?Gelée , 22 octets
Essayez-le en ligne!
Programme complet. Prend des arguments
n
,k
,i
.Il y a un bogue qui rend ce besoin inutilement plus long d'un octet.
la source
`
fait fonctionner. Oh, et là où votre réponse diffère, c'est que j'ai oublié d'implémenter un golf que j'ai trouvé dans une autre langue> _>Gelée ,
2516 octets-9 octets ~ 50% attribuables à la réponse Erik the Outgolfer's Jelly (1. en utilisant la clé new-ish rapidement
ƙ
même avec un bogue dans l'interpréteur qui coûte actuellement un octet; 2. en utilisant une répétition mappée pour éviter de compter et d'indexer dans la séquence actuelle .) Allez lui donner du crédit!Un programme complet prenant trois arguments:
n
,k
,i
qui imprime le résultat.Essayez-le en ligne!
Comment?
avec des entrées par exemple l' exécution
n=2
,k=3
,i=30
:la source
Mathematica, 85 octets
Essayez-le en ligne!
la source
APL (Dyalog Unicode) ,
12670 octetsEssayez-le en ligne!
Eh bien, merci à @ Adám d'avoir effacé 56 octets de cette réponse.
Ceci est un niladic Tradfn ( trad itional f unctio n ) prenant une entrée, qui est une liste d'éléments 3.
⎕PP←5
n'est pas ajouté au nombre d'octets , car il est utilisé pour limiter le P Rint P recision à 5 chiffres.∇f
et∇
ne sont pas ajoutés au nombre d'octets car ils ne font pas partie du code, seulement des délimiteurs pour le tradfn.Comment ça fonctionne:
la source
R , 88 octets
Essayez-le en ligne!
la source
for
corps de la boucle car il n'y a qu'une seule instruction.Swift , 152 octets
Sera-t-il plus court que Java?
Explication
la source
Rubis ,
777170 octetsEssayez-le en ligne!
Renvoie un rationnel, qui fonctionne à la fois comme un nombre et se stringifie à la fraction réduite exacte.
la source
Pyth , 24 octets
Suite de tests.
Point fixe de
[n]
sous certaine fonction de tableau.la source
Zephyr , 284 octets
Prend les trois nombres de stdin sur trois lignes distinctes. Génère un rapport exact tel que
104/11
ou63
.Non golfé
la source