Écrivez un programme ou une fonction nommée qui n
générera ou renverra la séquence jusqu'au nombre entier dans la séquence Iccanobif, documenté sur OEIS sous le numéro A014258 . Notez que seul l'élément zéro dans la séquence ( 0
) sera imprimé sin
est zéro.
La séquence est générée en démarrant comme la séquence Fibonacci standard, mais après avoir ajouté les deux nombres précédents, vous retournez le résultat et supprimez les zéros de tête. Un fait intéressant, du moins pour moi, est que cette séquence n'est pas strictement croissante (voir la liste ci-dessous). Elle semble également être (et est probablement) strictement supérieure ou égale à la séquence de Fibonacci.
L'entrée de votre programme doit être un entier.
Les 20 premiers numéros de la séquence sont fournis ici pour votre plus grand plaisir:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
Les failles standard sont interdites.
Le programme le plus court gagne.
EDIT: Ajout d'une note pour préciser que la séquence commence par l'élément zeroth et doit être incluse si n
est zéro.
Exemples de possibilités d'E / S:
0 -> 0
1 -> 0 1
6 -> 0 1 1 2 3 5 8
17 -> [0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297]
Maintenant qu'il y a plusieurs réponses, voici mes implémentations en Python 2 que j'ai travaillé dur pour cacher avec le balisage:
Itératif:
# Plus proche de mon programme initial. 73 octets. Il convient également de noter que ce programme ne peut pas atteindre un débordement de pile. Il fonctionne pour n = 5000 en moins de 10 secondes.i,a,b=input(),0,1 print a while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])
Récursif:
# Notez que cela imprimen
des nouvelles lignes de fin. 64 octets. Frappera une erreur de débordement de pile pour les grandes valeurs de n.def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';
Réponses:
Pyth,
171514Essayez-le en ligne
Implémentation très basique, commence par
range(2)
et ajoute un nombre d'éléments égal à l'entrée, puissupprime les extras pour fairedisparaître le dernier élément.Merci @Jakube d'avoir signalé le
>
truc de l' inversion.Explication
la source
Python 2, 58 octets
Utilise
str
pour convertir plutôt que pour les backticks car un nombre suffisamment grand en Python 2 est écrit avec un L à la fin. J'ai essayé une fonction récursive, mais elle s'est avérée plus longue (61):la source
Julia, 79 octets
Cela crée une fonction qui accepte un entier en entrée et renvoie un tableau d'entiers.
Non golfé + explication:
Exemples:
la source
T-SQL, 149
Fonction de table en ligne très simple qui utilise une requête CTE récursive. Comme il utilise des INT, cela dépassera à 37. L'ajout de CAST pour les bigints lui permettra d'aller plus loin à 63
Il est utilisé comme suit
la source
K,
2523 octetsUne simple modification d'un des exemples de No Stinking Loops .
La phrase
.|$
transforme un nombre en chaîne, l'inverse et l'évalue.Modifier:
Attention bâclée aux conditions aux limites de ma part. Plus correct maintenant:
Modifier 2:
(x+1)#
peut être remplacé par-1_
, économisant 2 caractères. L'espace est nécessaire car sinon_x
serait un identifiant, quand je veux que l'opérateur "drop" soit appliqué à une variable appeléex
.la source
Haskell,
6449 octetsExemple d'utilisation:
q 15
->[0,1,1,2,3,5,8,31,93,421,415,638,3501,9314,51821,53116]
Comment ça marche:
!
construit récursivement une liste infinie de nombres iccanobif commençant par son premier argument (le deuxième argument doit être le prochain numéro iccanobif).q
prend les premiersn
numéros de la liste iccanobif en commençant par1, 1
et ajoute a0
.la source
CJam, 18 octets
Comment ça marche
Essayez-le en ligne ici
la source
Java -
126124Je n'ai pas vu Java autour de ce site depuis un moment ...
f(5)
impressions0 1 1 2 3 5 8 31 93 421 415 638
la source
...System.out.println(c);
Integer.valueOf(
parnew Long(
(puis changer également laint
boucle forlong
). Si vous préférez simplement travailler avec des nombres entiers,new Integer(
est toujours plus court queInteger.valueOf(
.SWI-Prolog,
141131121 octetsExécution de
a(17,X).
sorties:Prend environ 10 secondes pour produire le résultat de
a(10000,X).
sur mon ordinateur.Edit: la version de 121 octets ci-dessus est une définition d'un prédicat = un liner. L'ancienne version de 131 octets est la suivante (doit être exécutée en tant que
p(17,X)
):la source
> <> (Poisson)
592254 octetsPas super golfé (42/43 blancs qui ne font rien et un total de 30 jetons de redirection), mais c'était un exercice intéressant pour le faire fonctionner en premier lieu.
Vous pouvez le tester ici , en fournissant la longueur souhaitée dans la pile initiale.
EDIT: nombre d'octets divisé par deux
la source
PHP,
114, 109 octetsRien d'extraordinaire, juste un algorithme fibonacci moyen avec la chaîne de magie inverse.
Non golfé:
la source
Excel VBA, 279 octets
L'exécution de la macro invitera l'utilisateur à entrer une valeur pour n.
Les résultats seront ensuite imprimés ligne par ligne dans la colonne A:
la source
JavaScript (ES2015),
8173 octetsExécuter cette fonction (nommée
f
) avec6
:la source
Pépin , 13 octets
Je suis presque sûr que toutes les fonctionnalités utilisées dans ce programme étaient présentes dans Pip avant que cette question ne soit posée.
Prend l'entrée comme argument de ligne de commande. Essayez-le en ligne!
Explication
Les valeurs des deux variables évoluent comme suit:
la source
Pushy , 18 octets (non concurrent)
Essayez-le en ligne!
Ce n'est pas le plus élégant des programmes, mais ça marche.
la source
Gelée , 9 octets (non concurrent)
Essayez-le en ligne!
la source
R, 134 octets
Exemple:
J'aimerais voir si quelqu'un a une meilleure alternative à R que de prendre votre numéro, d'en faire une chaîne, de l'inverser et de le reconvertir en nombre.
la source
Groovy, 70 octets
la source