Fibonacci + FizzBuzz = Fibo Nacci!
Ihre Herausforderung besteht darin, ein Fibo Nacci-Programm zu erstellen!
- Ein Fibo Nacci-Programm gibt die ersten 100 Fibonacci-Zahlen aus (beginnend mit 1).
- Wenn die Fibonacci-Zahl sowohl durch 2 als auch durch 3 teilbar ist (dh durch 6 teilbar ist), wird anstelle der Zahl FiboNacci ausgegeben.
- Andernfalls, wenn die Fibonacci-Zahl durch 2 teilbar ist, wird Fibo anstelle der Zahl ausgegeben.
- Andernfalls wird Nacci anstelle der Zahl ausgegeben, wenn die Fibonacci-Zahl durch 3 teilbar ist.
Regeln
- Das Programm sollte keine Eingabe annehmen.
- Das Programm sollte
\n
nach jeder Eingabe eine neue Zeile ( ) ausgeben . - Das Programm sollte nicht etwas zu STDERR drucken.
- Das Programm muss die ersten 100 Fibo Nacci-Einträge ausgeben (ab 1).
- Standardlücken sind nicht erlaubt (Standardeinstellung).
- Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes!
Hier ist die erwartete Ausgabe:
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
Der Katalog
Das Snackstapel- Snippet am Ende dieses Beitrags generiert den Katalog aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamt-Bestenliste.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
## Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
## Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
quelle
Antworten:
Pyth, 37 Bytes
Ich gehe die Fibonacci-Zahlen durch, anstatt sie vorher zu generieren, da es sehr kurz ist.
Probieren Sie es online aus.
quelle
Python 2, 62 Bytes
Eigentlich nicht viel anders als der Standard-FizzBuzz.
quelle
C ++ 11-Metaprogrammierung, 348 Bytes
Weil warum nicht. Kompiliert mit
warning C4307: '+': integral constant overflow
, läuft gut, aber 93+ Fibonacci-Zahlen werden nicht korrekt angezeigt (wegen Überlauf), daher ist dies ein ungültiger Eintrag (aber ich konnte ihn nicht mit so vielen Bytes gewinnen)Ungolfed
quelle
template <char H, char ...T>
) in Ihren Vorlagen verwenden, um (theoretisch) Werte beliebiger Länge zu verarbeiten. Dann müsste man nur die letzten 2 Zeichen in jeder Zeichenfolge untersuchen, um die Teilbarkeit durch 2 und / oder 3 zu bestimmen.__uint128_t
und vielleicht verwenden.C #
175 171 152145 BytesUnkomprimiert:
quelle
==0
s durch ersetzen>0
und die Ternaries umkehren: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
und dann können Sie die verlieren(object)
:)Oracle SQL, 212 Byte
Keine Golfsprache, aber ich musste versuchen ...
Verketten aller Zeilen mit
\n
:SQLFIDDLE
Oder mit einem Eintrag aus der Sequenz pro Zeile (162 Bytes):
quelle
The program should output a new line (\n) after every entry
belasse ich sie als längeren Code, aber der kürzere kann||CHR(13)
vor dem Finale hinzugefügt werden (ohne auf eine CLI angewiesen zu sein)FROM
für 171 chracters."\n"
? Scheint auf MySQL zu arbeiten. (Runningselect length("\n")
gibt 1 zurück und Runningselect "\n"
gibt nicht zurückn
, wie beiselect "\p"
Returns,p
da es sich um ein ungültiges Escape handelt)SELECT LENGTH('\n') FROM DUAL
Ausgaben2
in Oracle als werden'\n'
nicht konvertiertCHR(13)
.ShapeScript , 83 Byte
Probieren Sie es online!
quelle
Java,
407398351308 BytesGolfen mit Hilfe von @Geobits und @SamYonnou
Verbreiten Sie das Wort:
Verbose == Java
Ungolfed-Version:
quelle
java.math.*
statt der ganzen Sache. Verwenden Sie die Konstanten fürONE
undZERO
anstelle vonnew
BigIntegers. Entfernen Sie diepublic
aus der Klasse. Packen Sie alles ein, mit Ausnahme derprintln
Anweisung imfor
Body in der Loop-Deklaration usw. Ich empfehle, die Java-Golftipps im Allgemeinen zu lesen .BigInteger
den verschiedenen Golftechniken nicht vertraut war.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
immer dann zurückkehrt,BigInteger.ZERO
wenn eine Operation wieadd(...)
ausgewertet wird, sodass Sie==
stattdessen verwenden.equals(z)
können. Außerdem können Sie das Speichern vons=t.flipBit(2)
(6)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);}}}
Verbose.isEqualTo(Java)
Mathematica, 80 Bytes
Anpassung meiner älteren FizzBuzz-Lösung.
quelle
Echo
bei Versionen unter 10.3 auch durchPrint
.Ruby,
7166 Bytesungolfed:
quelle
f,n=%w[Fibo Nacci]
,f,n='Fibbo','Nacci'
undf='Fibbo';n='Nacci'
alle haben die gleiche Zeichenanzahl. +1[b,f='Fibo',n='Nacci',f,b,f+n][~b%6]
und mit zwei weiteren Bytes sparen , indem Sie die Klammern in entfernena=b+b=a
.~
Bediener. Ich habe es noch nie gesehen. Und jetzt weiß ich, warum negative Indizes Teil von Ruby sind :)puts [
stattputs[
?> <> 116 Bytes
Probieren Sie es online!
quelle
3%
Abschnitte kombinierenPyth, 39
Sehr ähnlich der Standard-Fizzbuzz-Lösung, nur mit einem Generator für die Fibonacci-Zahlen.
Probieren Sie es hier aus
quelle
C #,
498392320 BytesIch wollte das eigentlich nur mit linq machen, schade, dass ich meine eigene Summenfunktion für BigInteger schreiben musste, die es wirklich tötete :-(
Ungolfed:
Bearbeiten: Bis zu 320 Byte dank LegionMammal978 für den aggregierten Vorschlag und dank der C # -Antwort von olegz für die Kurzschreibweise x% 6 für X% 2 und x% 3 sowie der Verwendung von ternären Operatoren in einer einzelnen WriteLine-Anweisung.
quelle
Aggregate
LINQ-Funktion gehört?Python 2,
171121 Bytes"Brute Force Ansatz."
quelle
Javascript,
93 9086 Bytesquelle
a=[b,b=a+b][0]
zub=a+b,a=b-a
. Auch in einer völlig anderen Anmerkung, ich mag die Art und Weisen Sie wie wirklich schnell beantworten in Stack - Überlauf hehe einen schönen TagPython 2, 100 Bytes
Fügt bei großen Zahlen
L
am Ende ein hinzu, um anzuzeigen , dass es sich um eine lange Zahl handelt.Wenn dies ein Problem ist, finden Sie hier eine 104-Byte-Lösung
quelle
for
Schleife mit diesem Tipp verkürzen : codegolf.stackexchange.com/a/5047/42736 . Insbesondere derexec
Tipp sieht gut aus.exec <program_string>*n
Trick. Nett!Javascript (ES6),
137134 BytesRekursive Funktion, die Fibonnacci berechnet, es in ein Array einsetzt, dann Fibo, Nacci oder die Zahl ausgibt und sich selbst aufruft, um als nächstes bis 100 zu berechnen.
Es bricht bei 73 wegen der Genauigkeit der Javascript-Nummer. Die einzige Möglichkeit, das zu umgehen, wäre, meine eigene Bitberechnung hinzuzufügen.
quelle
5527939700884757 + 8944394323791464 = 14472334024676220
wenn es sein sollte,14472334024676221
weil JavaScript Floats mit 16-Bit-Präzision verwendet und das 17-Bit-Präzision erfordert. Sie sollten auch1
zweimal drucken .QBasic,
144141 BytesNicht besonders klein, aber es schlägt C ++ und C #
Keine Deklarationen, wird
:
wo immer möglich verwendet, da es 1 Byte billiger ist alsCRLF
. Dem Schleifenzähler wird eine 0 vorangestellt: Basic überläuft das 47. Fibonacci-Zeichen, sodass das zusätzliche Byte, das dort sein sollte, ausgeglichen wird.BEARBEITEN: Neil hat mir 3 Bytes gespart: 141 Bytes.
quelle
a$+
da bekannt ist, dass es sich an dieser Stelle um die leere Zeichenfolge handelt.Wolfram-Sprache, 84 Bytes
Art des Betrügens natürlich wegen des eingebauten
Fibonacci
.Beispielbefehl zum Ausführen des Skripts
quelle
Perl, 74 Bytes
Erfordert die folgende Befehlszeilenoption:,
-lMbigint
als 8 gezählt.Beispielnutzung
Perl, 79 Bytes
Wie oben, ohne dass Befehlszeilenoptionen erforderlich sind.
quelle
GolfScript, 47 Bytes
Erläuterung
quelle
PARI / GP,
7673 BytesDrei Bytes mit freundlicher Genehmigung von Mitch Schwartz gespeichert .
Beispielnutzung
quelle
for(i=b=!a=1,99,b=a+a=b; ...
fibo
;)> <>
128119 BytesIch habe
schamlosein vorhandenes Programm FizzBuzz entlehnt und es so modifiziert, dass es für die Fibo Nacci-Sequenz funktioniert.Es gibt Zahlen für immer aus.Jetzt ist es fest, dh es werden nur 100 Nummern ausgegeben. Probieren Sie es hier aus .quelle
Pyth, 51 Bytes
Erzeugt die Fibonacci-Sequenz und entscheidet dann, was gedruckt werden soll.
Versuchen Sie dies zu testen (nur die ersten 20 Zahlen)
quelle
Clojure, 127 Bytes
Ungolfed:
Einige Tricks verwendet:
def
, das die Fibonacci-Sequenz selbst gibt , wird Konrad Garus schamlos gestohlen .str
kann Symbole als Eingabe nehmen. Verrückt, richtig?if
in einigen Fällen der kürzeste Weg zum Schreiben .quelle
lazy-cat
?[1 1]
) verkettet, wobei jedes Element in der Fibonacci-Sequenz mit dem darauf folgenden Element summiert wird.fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
?CJam, 44 Bytes
Probieren Sie es online im CJam-Interpreter aus .
quelle
Gleichstrom,
1008979 BytesInspiriert von http://c2.com/cgi/wiki?DeeCee
quelle
Javascript (ES2015), 99 Byte
Ungolfed:
quelle
alert
anstelle vonconsole.log
; Einige Bytes werden abgeschabt.F #,
202 163149 BytesDies ist eine FSX-Datei (F # -Skript)
quelle
PHP, 75 Bytes
Überraschend wettbewerbsfähig. Benötigt PHP v5.5 oder höher. Ich gehe von Standardeinstellungen aus, da diese ohne .ini sind (Sie können Ihre lokale .ini mit der
-n
Option deaktivieren ).Beispielnutzung
quelle
-n
bcadd
funktioniert nicht, auch wennbcmath
installiert ist. Ohne-n
viel Zeug wird auf stderr ausgegeben.Prolog, 182 Bytes
Probieren Sie es hier online aus.
Um das Programm auszuführen, verwenden Sie die Abfrage:
quelle