Fibonacci + FizzBuzz = Fibo Nacci!
Votre défi est de créer un programme Fibo Nacci!
- Un programme Fibo Nacci génère les 100 premiers nombres de Fibonacci (à partir de 1).
- Si le nombre de Fibonacci est divisible par 2 et par 3 (c'est-à-dire qu'il est divisible par 6), indiquez FiboNacci à la place du nombre.
- Sinon, si le nombre Fibonacci est divisible par 2, indiquez Fibo au lieu du nombre.
- Sinon, si le nombre de Fibonacci est divisible par 3, indiquez alors Nacci au lieu du nombre.
Règles
- Le programme ne devrait prendre aucune entrée.
- Le programme devrait afficher une nouvelle ligne (
\n
) après chaque entrée. - Le programme ne doit rien imprimer sur STDERR.
- Le programme doit générer les 100 premières entrées Fibo Nacci (à partir de 1).
- Les failles standard ne sont pas autorisées (par défaut).
- C'est du code-golf, donc le code le plus court en octets gagne!
Voici le résultat attendu:
1
1
Fibo
Nacci
5
Fibo
13
Nacci
Fibo
55
89
FiboNacci
233
377
Fibo
Nacci
1597
Fibo
4181
Nacci
Fibo
17711
28657
FiboNacci
75025
121393
Fibo
Nacci
514229
Fibo
1346269
Nacci
Fibo
5702887
9227465
FiboNacci
24157817
39088169
Fibo
Nacci
165580141
Fibo
433494437
Nacci
Fibo
1836311903
2971215073
FiboNacci
7778742049
12586269025
Fibo
Nacci
53316291173
Fibo
139583862445
Nacci
Fibo
591286729879
956722026041
FiboNacci
2504730781961
4052739537881
Fibo
Nacci
17167680177565
Fibo
44945570212853
Nacci
Fibo
190392490709135
308061521170129
FiboNacci
806515533049393
1304969544928657
Fibo
Nacci
5527939700884757
Fibo
14472334024676221
Nacci
Fibo
61305790721611591
99194853094755497
FiboNacci
259695496911122585
420196140727489673
Fibo
Nacci
1779979416004714189
Fibo
4660046610375530309
Nacci
Fibo
19740274219868223167
31940434634990099905
FiboNacci
83621143489848422977
135301852344706746049
Fibo
Nacci
Le catalogue
L' extrait de pile de collations au bas de cet article génère le catalogue à partir des réponses a) sous forme de liste des solutions les plus courtes par langue et b) sous forme de classement global.
Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:
## Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs numéros dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier séparément les pénalités d'indicateur d'interprétation), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de code:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
la source
Réponses:
Pyth, 37 octets
Je boucle les numéros de Fibonacci au lieu de les générer à l’avance, car c’est vraiment court.
Essayez-le en ligne.
la source
Python 2, 62 octets
Pas très différent du FizzBuzz standard, vraiment.
la source
Métaprogrammation C ++ 11, 348 octets
Parce que pourquoi pas Il compile avec
warning C4307: '+': integral constant overflow
, fonctionne bien, mais plus de 93 e nombres de Fibonacci ne sont pas affichés correctement (en raison d'un débordement), il s'agit donc d'une entrée non valide (mais je ne pouvais pas le gagner avec autant d'octets).Ungolfed
la source
template <char H, char ...T>
) dans vos modèles pour gérer (théoriquement) des valeurs de longueur arbitraire. Ensuite, il suffirait d'examiner les 2 derniers caractères de chaque chaîne pour déterminer la divisibilité par 2 et / ou 3.__uint128_t
, peut-être.C #,
175 171 152145 octetsNon compressé:
la source
==0
s par>0
et en inversant les ternaires:class c{static void Main(){for(System.Numerics.BigInteger a=1,b=1,c=0;c++<100;b=a+(a=b))System.Console.WriteLine(a%6>0?a%2>0?a%3>0?a:(object)"Nacci":"Fibo":"FiboNacci");}}
decimal a=1,b=1
àdynamic a=1m,b=a
et vous pouvez perdre la(object)
:)Oracle SQL, 212 octets
Pas une langue de golf mais je devais essayer ...
Concaténer toutes les lignes avec
\n
:SQLFIDDLE
Ou avec une entrée de la séquence par ligne (162 octets):
la source
The program should output a new line (\n) after every entry
je le laisse comme code le plus long, mais le code le plus court pourrait être rendu conforme (sans s’appuyer sur une CLI) en ajoutant||CHR(13)
avant la version finale.FROM
pour 171 personnes."\n"
? Semble travailler sur MySQL. (Runningselect length("\n")
renvoie 1 etselect "\n"
ne renvoie pasn
, comme pour lesselect "\p"
retoursp
dus à une évasion non valide)SELECT LENGTH('\n') FROM DUAL
les sorties2
dans Oracle en tant que'\n'
ne sont pas convertiesCHR(13)
.ShapeScript , 83 octets
Essayez-le en ligne!
la source
Java,
407398351308 octetsIl a joué au golf avec l'aide de @Geobits et @SamYonnou
Faire connaitre:
Verbose == Java
Version non-golfée:
la source
java.math.*
au lieu de tout. Utilisez les constantes pourONE
et à laZERO
place denew
BigIntegers. Retirer lepublic
de la classe. Emballez tout sauf laprintln
déclaration dans lefor
corps de la déclaration de boucle, etc. Je vous recommande de regarder par-dessus les astuces de golf Java en général.BigInteger
et ses différentes techniques de golf.import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,z=a,t=a.flipBit(1),h=t.flipBit(0),s=t.flipBit(2);for(int i=0;i<100;i++){System.out.println(b.mod(s).equals(z)?"FiboNacci":b.mod(t).equals(z)?"Fibo":b.mod(h).equals(z)?"Nacci":b);c=a;a=b;b=c.add(b);}}}
BigInteger
revient toujoursBigInteger.ZERO
quand une opération commeadd(...)
évalue à zéro alors vous pouvez utiliser à la==
place.equals(z)
, vous pouvez également supprimer le stockages=t.flipBit(2)
(6) et effectuer une tâche interne intelligente comme celle-import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,d,z=a,t=a.flipBit(1),h=t.flipBit(0);for(int i=0;i<100;i++){System.out.println((c=b.mod(t)).add(d=b.mod(h))==z?"FiboNacci":c==z?"Fibo":d==z?"Nacci":b);c=a;a=b;b=c.add(b);}}}
ci : ces modifications laVerbose.isEqualTo(Java)
Mathematica, 80 octets
Adaptation de mon ancienne solution FizzBuzz.
la source
Echo
parPrint
.Ruby,
7166 octetsungolfed:
la source
f,n=%w[Fibo Nacci]
,f,n='Fibbo','Nacci'
Etf='Fibbo';n='Nacci'
tous ont le même nombre de caractères. +1[b,f='Fibo',n='Nacci',f,b,f+n][~b%6]
, et deux autres en supprimant les parenthèsesa=b+b=a
.~
opérateur. Jamais vu auparavant. Et maintenant je sais pourquoi les index négatifs font partie de ruby :)puts [
au lieu deputs[
?> <> , 116 octets
Essayez-le en ligne!
la source
3%
sectionsPyth, 39
Très similaire à la solution standard de fizzbuzz, juste avec un générateur pour les numéros de Fibonacci.
Essayez-le ici
la source
C #,
498392320 octetsJe voulais vraiment faire cela avec linq, dommage que je devais écrire ma propre fonction de somme pour BigInteger qui l'a vraiment tué :-(
Ungolfed:
Edit: Réduisez jusqu'à 320 octets grâce à LegionMammal978 pour la suggestion d'agrégat et à la réponse C # d'olegz pour le raccourci x% 6 pour X% 2 && x% 3 ainsi que pour l'utilisation d'opérateurs ternaires dans une seule instruction WriteLine.
la source
Aggregate
fonction LINQ?Python 2,
171121 octets"Approche de la force brute."
la source
Javascript,
93 9086 Octetsla source
a=[b,b=a+b][0]
àb=a+b,a=b-a
. Aussi, dans une note totalement indépendante, j'aime la façon dont vous répondez très vite dans Stack Overflow hehe Bonne journéePython 2, 100 octets
Pour les grands nombres, ajoute un
L
à la fin pour montrer que c'est un nombre long.Si cela pose problème, voici une solution de 104 octets
la source
for
boucle en utilisant cette astuce: codegolf.stackexchange.com/a/5047/42736 . En particulier, laexec
pointe semble bonne.exec <program_string>*n
tour. Agréable!Javascript (ES6),
137134 octetsFonction récursive qui calcule fibonnacci, la met dans un tableau puis affiche Fibo, Nacci ou le nombre et s’appelle pour calculer la suivante jusqu’à 100.
Il tombe à 73 en raison de la précision du nombre javascript. La seule façon de contourner ce problème serait d’ajouter mon propre calcul de bit.
la source
5527939700884757 + 8944394323791464 = 14472334024676220
quand il devrait être14472334024676221
parce que JavaScript utilise des flottants de précision 16 bits et qui nécessite 17 bits de précision. Vous devriez également imprimer1
deux fois.QBasic,
144141 octetsPas particulièrement petit, mais il bat C ++ et C #
Aucune déclaration, utilisez le
:
partout où c'est possible car c'est 1 octet moins cher queCRLF
. Préfixé 0 au compteur de boucle: Basic débordera sur le 47ème caractère de Fibonacci, donc compensé pour l'octet supplémentaire qui devrait y figurer.EDIT: Neil m'a sauvé 3 octets: 141 octets.
la source
a$+
car il est connu que la chaîne est vide à ce stade.Wolfram Language, 84 octets
Une sorte de triche bien sûr, à cause de la logique intégrée
Fibonacci
.Exemple de commande pour exécuter le script
la source
Perl, 74 octets
Requiert l'option de ligne de commande suivante:,
-lMbigint
considérée comme 8.Exemple d'utilisation
Perl, 79 octets
Comme ci-dessus, sans nécessiter d'options de ligne de commande.
la source
GolfScript, 47 octets
Explication
la source
PARI / GP,
7673 octetsSauvé trois octets avec la permission de Mitch Schwartz .
Exemple d'utilisation
la source
for(i=b=!a=1,99,b=a+a=b; ...
fibo
;)> <>,
128119 octetsJ'ai
volé sans vergogneemprunté un programme existant, le programme FizzBuzz, et l'ai modifié pour qu'il fonctionne pour la séquence Fibo Nacci.Il sort des nombres pour toujours.Maintenant, il est fixe, c’est-à-dire qu’il ne sort que 100 numéros. Essayez ici .la source
Pyth, 51 octets
Génère la séquence de Fibonacci puis décide quoi imprimer.
Pour tester, essayez ceci (seulement les 20 premiers chiffres)
la source
Clojure, 127 octets
Ungolfed:
Quelques astuces utilisées:
def
détail de la séquence de Fibonacci est volé sans vergogne à Konrad Garus .str
peut prendre des symboles en entrée. Fou, non?if
dans certains cas.la source
lazy-cat
?[1 1]
) avec le résultat de la somme de chaque élément de la séquence de Fibonacci et de l'élément qui le suit.fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
?CJam, 44 octets
Essayez-le en ligne dans l' interprète CJam .
la source
dc,
1008979 octetsInspiré par http://c2.com/cgi/wiki?DeeCee
la source
Javascript (ES2015), 99 octets
Ungolfed:
la source
alert
au lieu deconsole.log
; il supprime quelques octets.F #,
202 163149 octetsCeci est un fichier FSX (script F #)
la source
PHP, 75 octets
Étonnamment compétitif. Requres PHP version 5.5 ou supérieure. J'assume les paramètres par défaut, car ils sont sans .ini (vous pouvez désactiver votre .ini local avec l'
-n
option).Exemple d'utilisation
la source
-n
bcadd
ne fonctionne pas même quandbcmath
est installé. Sans-n
beaucoup de choses est sorti sur stderr.Prolog, 182 octets
Essayez-le en ligne ici
Pour exécuter le programme, utilisez la requête:
la source