Le défi
Étant donné une entrée entière, retournez le premier numéro de Fibonacci qui contient l'entrée en lui-même avec l'index de ce numéro de Fibonacci (index commençant par 0 ou 1 - jusqu'à vous, mais veuillez le mentionner dans votre réponse). Par exemple, si donné l'entrée de 12, le programme retournerait 26: 121393
comme 12 se trouve dans le nombre ( 12 1393) et il est à l'index 26 des nombres de Fibonacci.
Exemples
Compte tenu de l'entrée:
45
Votre programme devrait produire:
33: 3524578
Contribution:
72
Production:
54: 86267571272
Contribution:
0
Production:
0: 0
Contribution:
144
Production:
12: 144
Notation
C'est le golf de code , donc la réponse la plus courte dans chaque langue l'emporte.
Réponses:
Gelée , 10 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
D
Python 2 , 56 octets
Essayez-le en ligne!
la source
Perl 6 , 30 octets
Essayez-le en ligne!
first
est une fonction qui renvoie le premier élément d'une séquence qui réussit un test, et elle prend commodément un:kv
adverbe qui lui dit de renvoyer à la fois la clé (index) et la valeur correspondante.la source
:p
adverbe au lieu de:kv
.Lot, 104 octets
Fonctionne pour en
n=0..45
raison de la plage limitée de l'arithmétique entière de Batch. Explication: Batch n'a pas de test de correspondance intégré, mais il a un opérateur qui peut remplacer les chaînes littérales par d'autres chaînes littérales, par exemple, ilif "%s:l=%"=="%s%"
est vrai si%s%
n'est pas vide mais ne contient pasl
. L'utilisation decall
est alors une astuce pour remplacer%1
(l'entrée) dans l'opérateur de remplacement, maiscall
ne fonctionne pas sur les instructions de flux de contrôle, donc une affectation temporaire intermédiaire est nécessaire.la source
Gelée , 15 octets
Essayez-le en ligne!
la source
Javascript ES6, 68 caractères
Tester:
la source
Python 3, 76 octets
la source
Emojicode , 133 octets
Essayez-le en ligne!
la source
Dyalog APL, 39 octets
Utilisation de la récursivité de la queue. N'essayez pas 72, cela va casser votre machine car ses fibonacci recalculent partout à chaque appel.
Essayez-le en ligne!
la source
Mathematica, 119 octets
1 indexé
Essayez-le en ligne!
la source
En fait , 13 octets
Essayez-le en ligne!
Explication:
la source
R, 65 octets
La récursivité standard pour générer des Fibnums, mais au lieu de se terminer en fonction de
n
, se termine lorsqu'elleb
correspond à l'expression régulièrex
. Cela fonctionne étonnamment bien. J'ai supposé que l'utilisation d'expressions régulières avec des chiffres nécessiterait beaucoup de tracas pour les convertir en chaînes, mais cela ne semble pas être nécessaire :)Cela a aussi à dépasser la récursion par 1 étape, en vérifiant au
b
lieu dea
et retranchant puis1
den
. C'est pour s'assurer que celaf(0)
fonctionne correctement.Cela échoue pour la plupart des valeurs lorsque l'entrée dépasse
1001
, en raison de maxint. Si nous remplaçonsa
etb
pour les bigints, cela fonctionne pour les entrées plus élevées (les tests actuels sont àx = 11451
)la source
JavaScript ES6,
797875 octets-1 octet par Step Hen
-3 octets par Neil
la source
eval()
au lieu de{ return}
pour enregistrer un octet, et vous pouvez supprimer let=
puisque vous n'utilisez pas la récursivité:i=>eval('d=a=b=1;while(!~(a+"").indexOf(i+""){c=b;b=a+b;a=c;d++};d+": "+a')
String.prototype.indexOf
convertit automatiquement son paramètre en chaîne, pas besoin de le faire explicitement. Vous semblez également avoir copié la faute de frappe de @ StepHen (vous avez plus de(
s que de)
s).C # (.NET Core) , 99 octets
Essayez-le en ligne!
Prend l'entrée comme un entier, renvoie une chaîne avec la sortie.
la source
Haskell , 84 octets
Essayez-le en ligne!
la source
PHP, 80 octets
Le script est assez simple, stockant simplement les termes actuels et suivants de la séquence dans $ a et $ b tout au long. Pour permettre le 0e terme de 0, $ a et $ b se voient attribuer initialement les valeurs du -1e terme (1) et du 0e terme (0) respectivement.
Les deux valeurs sont recalculées dans une seule expression, ce qui correspond à deux affectations en une; effectivement:
Si la valeur d'entrée correspond au début du terme, la fonction strpos () retournera 0 (ce qui est falsey et donnerait un faux négatif), mais dans le monde Wonderphul de PHP, bien que ce
false == 0
soit vrai etfalse < 0
faux,false < -1
c'est vrai! Et donc, l'utilisation de cette comparaison économise cinq octets par rapport à!==false
.la source
Japt ,
1714 octetsEnregistré 3 octets grâce à @JustinMariner
Essayez-le en ligne!
Explication
la source
_ŬøU}a@[XMgX]
. Utilisers1 q
pour obtenir le dernier élément, ce qui permet de supprimer le<space>s
PHP ,
163141 octetsEssayez-le en ligne!
Utilisations
$b[0] = 0;
et$b[1] = 1;
pour le début de la séquence fibla source
Perl 5 , 67 + 1 (-p) = 68 octets
Essayez-le en ligne!
la source
PHP , 93 octets
Boucle simple à travers la séquence de Fibonacci. La vérification de notre numéro d'entrée se fait en
strpos(" $a[$i]","$argv[1]")
; l'espace supplémentaire est parcestrpos
que retournera false-y si l '«aiguille» est trouvée au début de la chaîne. Nous terminons si l'entrée est trouvée et renvoyons la chaîne requise.Essayez-le en ligne!
la source
Lisp commun, 105 octets
Essayez-le en ligne!
la source