Fibonacci + FizzBuzz = Fibo Nacci!
Twoim wyzwaniem jest stworzenie programu Fibo Nacci!
- Program Fibo Nacci generuje pierwsze 100 liczb Fibonacciego (od 1).
- Jeśli liczba Fibonacciego jest podzielna przez 2 i 3 (tzn. Jest podzielna przez 6), to wypisz FiboNacci zamiast liczby.
- W przeciwnym razie, jeśli liczba Fibonacciego jest podzielna przez 2, to wypisz Fibo zamiast liczby.
- W przeciwnym razie, jeśli liczba Fibonacciego jest podzielna przez 3, następnie wypisz Nacci zamiast liczby.
Zasady
- Program nie powinien pobierać danych wejściowych.
- Program powinien wypisywać nową linię (
\n
) po każdym wpisie. - Program nie powinien drukować niczego do STDERR.
- Program musi wypisać pierwszych 100 wpisów Fibo Nacci (od 1).
- Standardowe luki są niedozwolone (domyślnie).
- To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach!
Oto oczekiwany wynik:
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
Katalog
Przekąskowy Stos krótkiego opisu na dole tego postu generuje katalog z odpowiedziami a) jako listę najkrótszym roztworu na języku oraz b) jako ogólny liderów.
Aby upewnić się, że Twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
## Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
## Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
źródło
Odpowiedzi:
Pyth, 37 bajtów
Przeglądam liczby Fibonacciego zamiast generować je wcześniej, ponieważ jest to naprawdę bardzo krótkie.
Wypróbuj online.
źródło
Python 2, 62 bajty
Naprawdę niewiele różni się od standardowego FizzBuzz.
źródło
C ++ 11 metaprogramowanie, 348 bajtów
Bo czemu nie. Kompiluje się z
warning C4307: '+': integral constant overflow
, działa dobrze, ale 93+ numery Fibonacciego nie są wyświetlane poprawnie (z powodu przepełnienia), więc jest to niepoprawny wpis (ale nie mogłem go wygrać z taką ilością bajtów)Nie golfił
źródło
template <char H, char ...T>
) w swoich szablonach do (teoretycznie) obsługi wartości o dowolnej długości. Wtedy byłoby tylko kwestią zbadania ostatnich 2 znaków w każdym ciągu, aby określić podzielność przez 2 i / lub 3.__uint128_t
być może użyć .C #,
175 171 152145 bajtówNieskompresowane:
źródło
==0
s>0
trójkami i odwracając je: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
na,dynamic a=1m,b=a
a następnie możesz stracić(object)
:)Oracle SQL, 212 bajtów
Nie jest to język golfowy, ale musiałem spróbować ...
Łączenie wszystkich wierszy z
\n
:SQLFIDDLE
Lub z jednym wpisem z sekwencji na wiersz (162 bajty):
źródło
The program should output a new line (\n) after every entry
, pozostawię go jako dłuższy kod, ale krótszy można by uczynić zgodny (bez polegania na CLI) poprzez dodanie||CHR(13)
przed końcowymFROM
dla 171 znaków."\n"
? Wydaje się działać na MySQL. (Uruchomienieselect length("\n")
zwraca 1, a bieganieselect "\n"
nie wracan
, jak w przypadkuselect "\p"
zwrotów zp
powodu nieprawidłowej ucieczki)SELECT LENGTH('\n') FROM DUAL
wyjścia2
w Oracle, ponieważ'\n'
nie zostaną przekonwertowane naCHR(13)
.ShapeScript , 83 bajty
Wypróbuj online!
źródło
Java,
407398351308 bajtówGrał w golfa z pomocą @Geobits i @SyYonnou
Szerz nowinę:
Verbose == Java
Wersja bez golfa:
źródło
java.math.*
zamiast całości. Użyj stałych dlaONE
iZERO
zamiastnew
BigIntegers. Usuńpublic
z klasy. Spakuj wszystko opróczprintln
oświadczenia dofor
treści wewnątrz deklaracji pętli itp . Ogólnie polecam przejrzeć wskazówki dotyczące golfa Java .BigInteger
jej różnych technik golfowych.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
zawsze powraca,BigInteger.ZERO
gdy jakaś operacja, jak np.,add(...)
Kończy się na zero, więc możesz użyć==
zamiast.equals(z)
, możesz też zrezygnować z przechowywanias=t.flipBit(2)
(6) i zamiast tego wykonać pewne sprytne wewnętrzne zadanie, takie jak: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);}}}
te zmiany sprowadzają to do 280Verbose.isEqualTo(Java)
Mathematica, 80 bajtów
Dostosowanie mojego starszego rozwiązania FizzBuzz.
źródło
Echo
zPrint
.Rubin,
7166 bajtówbez golfa:
źródło
f,n=%w[Fibo Nacci]
,f,n='Fibbo','Nacci'
If='Fibbo';n='Nacci'
wszystkie mają taką samą liczbę znaków. +1[b,f='Fibo',n='Nacci',f,b,f+n][~b%6]
, a dwa kolejne, usuwając nawiasya=b+b=a
.~
operatorem. Nigdy wcześniej tego nie widziałem. A teraz wiem, dlaczego indeksy ujemne są częścią rubinu :)puts [
zamiastputs[
?> <> , 116 bajtów
Wypróbuj online!
źródło
3%
sekcjePyth, 39 lat
Bardzo podobny do standardowego rozwiązania fizzbuzz, tylko z generatorem liczb Fibonacciego.
Wypróbuj tutaj
źródło
C #,
498392320 bajtówPo prostu bardzo chciałem to zrobić z linq, szkoda, że musiałem napisać własną funkcję sumy dla BigInteger, która naprawdę to zabiła :-(
Nie golfowany:
Edycja: Do 320 bajtów dzięki LegionMammal978 za sugestię zagregowaną i dzięki odpowiedzi C # olegza dla skrótu x% 6 dla X% 2 i& x% 3, a także użycia operatorów trójskładnikowych w pojedynczej instrukcji WriteLine.
źródło
Aggregate
funkcji LINQ?Python 2,
171121 bajtów„Brutalne podejście”.
źródło
JavaScript,
93 9086 bajtówźródło
a=[b,b=a+b][0]
nab=a+b,a=b-a
. Ponadto, w całkowicie niezwiązanej notatce, podoba mi się sposób, w jaki odpowiadasz jak bardzo szybko w Stack Overflow hehe Miłego dniaPython 2, 100 bajtów
W przypadku dużych liczb dodaje
L
na końcu a, pokazując, że jest to długa liczba.Jeśli to jest problem, oto 104 bajtowe rozwiązanie
źródło
for
pętlę za pomocą tej wskazówki: codegolf.stackexchange.com/a/5047/42736 . W szczególnościexec
końcówka wygląda dobrze.exec <program_string>*n
lewę. Miły!JavaScript (ES6),
137134 bajtówFunkcja rekurencyjna, która oblicza Fibonnacciego, umieść ją w tablicy, a następnie wypisz Fibo, Nacci lub liczbę i wywołaj się, aby obliczyć następne do 100.
Uszkadza się w 73 z powodu precyzji liczby javascript. Jedynym sposobem na obejście tego byłoby dodanie własnej kalkulacji bitowej.
źródło
5527939700884757 + 8944394323791464 = 14472334024676220
czasie powinno się nie udać,14472334024676221
ponieważ JavaScript używa 16-bitowych liczb zmiennoprzecinkowych, a to wymaga 17 bitów precyzji. Powinieneś także wydrukować1
dwa razy.QBasic,
144141 bajtówNiezbyt mały, ale pokonuje C ++ i C #
Bez deklaracji,
:
wszędzie tam, gdzie to możliwe, ponieważ jest o 1 bajt tańszy niżCRLF
. Przedrostek 0 w liczniku pętli: Basic przepełni się na 47 znaku Fibonacciego, więc skompensowano dodatkowy bajt, który powinien tam być.EDYCJA: Neil zapisał mi 3 bajty: 141 bajtów.
źródło
a$+
ponieważ wiadomo, że w tym momencie jest to pusty ciąg.Wolfram Language, 84 bajtów
Oczywiście rodzaj oszustwa z powodu wbudowanego
Fibonacci
.Przykładowa komenda do uruchomienia skryptu
źródło
Perl, 74 bajty
Wymaga następującej opcji wiersza poleceń:,
-lMbigint
liczony jako 8.Przykładowe użycie
Perl, 79 bajtów
Taki sam jak powyżej, bez wymagania żadnych opcji wiersza poleceń.
źródło
GolfScript, 47 bajtów
Wyjaśnienie
źródło
PARI / GP,
7673 bajtówZaoszczędzono trzy bajty dzięki uprzejmości Mitcha Schwartza .
Przykładowe użycie
źródło
for(i=b=!a=1,99,b=a+a=b; ...
fibo
;)> <>,
128119 bajtówI
bezczelnie ukradłpożyczył istniejącego programu FizzBuzz program i modyfikować go do pracy dla sekwencji Fibo Nacci.Wyprowadza liczby na zawsze.Teraz jest naprawiony, tzn. Wyświetla tylko 100 liczb. Wypróbuj tutaj .źródło
Pyth, 51 bajtów
Generuje sekwencję Fibonacciego, a następnie decyduje, co wydrukować.
Aby przetestować, spróbuj tego (robi tylko pierwsze 20 liczb)
źródło
Clojure, 127 bajtów
Nie golfowany:
Niektóre zastosowane sztuczki:
def
co daje samą sekwencję Fibonacciego, zostaje bezwstydnie skradzione Konradowi Garusowi .str
może przyjmować symbole jako dane wejściowe. Szalony, prawda?if
w niektórych przypadkach najkrótszym sposobem na napisanie .źródło
lazy-cat
?[1 1]
) z wynikiem sumowania każdego elementu w sekwencji Fibonacciego z elementem następującym po nim.fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
?CJam, 44 bajty
Wypróbuj online w interpretatorze CJam .
źródło
dc,
1008979 bajtówInspirowany http://c2.com/cgi/wiki?DeeCee
źródło
JavaScript (ES2015), 99 bajtów
Nie golfowany:
źródło
alert
zamiastconsole.log
; goli niektóre bajty.F #,
202 163149 bajtówTo jest plik FSX (skrypt F #)
źródło
PHP, 75 bajtów
Zaskakująco konkurencyjny. Wymaga PHP w wersji 5.5 lub nowszej. Przyjmuję ustawienia domyślne, ponieważ nie mają one pliku .ini (możesz wyłączyć lokalne .ini z
-n
opcją).Przykładowe użycie
źródło
-n
bcadd
nie działa, nawet jeślibcmath
jest zainstalowany. Bez-n
wielu rzeczy jest wysyłany na stderr.Prolog, 182 bajty
Wypróbuj online tutaj
Aby uruchomić program, użyj zapytania:
źródło