Fibonacci + FizzBuzz = Fibo Nacci!
Tantangan Anda adalah membuat program Fibo Nacci!
- Program Fibo Nacci menghasilkan 100 angka Fibonacci pertama (mulai dari 1).
- Jika angka Fibonacci dapat dibagi oleh 2 dan 3 (yaitu dibagikan dengan 6), maka output FiboNacci bukan nomor.
- Jika tidak, jika angka Fibonacci dibagi 2, maka output Fibo bukan angka.
- Jika tidak, jika angka Fibonacci dibagi dengan 3, maka output Nacci bukan angka.
Aturan
- Program seharusnya tidak menerima input.
- Program harus menampilkan baris baru (
\n
) setelah setiap entri. - Program seharusnya tidak mencetak apa pun ke STDERR.
- Program harus menampilkan 100 entri Fibo Nacci pertama (mulai dari 1).
- Celah standar tidak diizinkan (secara default).
- Ini adalah kode-golf sehingga kode terpendek dalam byte menang!
Inilah output yang diharapkan:
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
The Snack Stack Snippet di bagian bawah posting ini menghasilkan katalog dari sebuah jawaban) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
sumber
Jawaban:
Pyth, 37 byte
Saya mengulang-ulang angka Fibonacci alih-alih menghasilkannya sebelumnya, karena ini sangat singkat untuk dilakukan.
Cobalah online.
sumber
Python 2, 62 byte
Tidak jauh berbeda dengan FizzBuzz standar, kok.
sumber
Pemrograman C ++ 11, 348 byte
Karena kenapa tidak. Ini mengkompilasi dengan
warning C4307: '+': integral constant overflow
, berjalan dengan baik, tetapi angka Fibonacci 93+ tidak ditampilkan dengan benar (karena melimpah), jadi ini entri yang tidak valid (tapi saya tidak bisa memenangkannya dengan banyak byte meskipun)Tidak disatukan
sumber
template <char H, char ...T>
) di template Anda untuk (secara teoritis) menangani nilai-nilai panjang sewenang-wenang. Maka itu hanya masalah memeriksa 2 karakter terakhir dalam setiap string untuk menentukan dibagi oleh 2 dan / atau 3.__uint128_t
, mungkin.C #,
175 171 152145 byteTerkompresi:
sumber
==0
s dengan>0
dan membalikkan terner: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
kedynamic a=1m,b=a
dan kemudian Anda dapat kehilangan(object)
:)Oracle SQL, 212 byte
Bukan bahasa golf tetapi saya harus mencoba ...
Menggabungkan semua baris dengan
\n
:SQLFIDDLE
Atau dengan satu entri dari urutan per baris (162 byte):
sumber
The program should output a new line (\n) after every entry
saya akan membiarkannya sebagai kode yang lebih panjang tetapi yang lebih pendek dapat dibuat sesuai (tanpa bergantung pada CLI) dengan menambahkan||CHR(13)
sebelum finalFROM
untuk 171 chracters."\n"
? Tampaknya bekerja di MySQL. (Berlariselect length("\n")
mengembalikan 1, dan berlariselect "\n"
tidak kembalin
, sepertiselect "\p"
pengembalianp
karena menjadi pelarian yang tidak valid)SELECT LENGTH('\n') FROM DUAL
output2
dalam Oracle karena'\n'
tidak dapat dikonversi keCHR(13)
.ShapeScript , 83 byte
Cobalah online!
sumber
Java,
407398351308 byteGolf dengan bantuan dari @Geobits dan @SamYonnou
Sebarkan berita:
Verbose == Java
Versi tidak disatukan:
sumber
java.math.*
alih-alih semuanya. Gunakan konstanta untukONE
danZERO
bukannyanew
BigIntegers. Hapuspublic
dari kelas. Kemas semuanya kecualiprintln
pernyataan difor
badan di dalam deklarasi loop, dll. Saya merekomendasikan untuk melihat tips golf Java secara umum.BigInteger
dan berbagai teknik golfnya.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
selalu kembaliBigInteger.ZERO
ketika beberapa operasi sepertiadd(...)
mengevaluasi ke nol sehingga Anda dapat menggunakan==
alih-alih.equals(z)
, juga Anda dapat menghapus penyimpanans=t.flipBit(2)
(6) dan alih-alih melakukan beberapa tugas pintar seperti: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);}}}
perubahan ini membuatnya menjadi 280Verbose.isEqualTo(Java)
Mathematica, 80 byte
Adaptasi solusi FizzBuzz lama saya.
sumber
Echo
denganPrint
.Ruby,
7166 byteungolfed:
sumber
f,n=%w[Fibo Nacci]
,f,n='Fibbo','Nacci'
danf='Fibbo';n='Nacci'
semua memiliki jumlah karakter yang sama. +1[b,f='Fibo',n='Nacci',f,b,f+n][~b%6]
, dan dua lagi dengan menghapus tanda kurunga=b+b=a
.~
operator. Belum pernah melihatnya sebelumnya. Dan sekarang saya tahu mengapa indeks negatif adalah bagian dari ruby :)puts [
bukanputs[
?> <> , 116 byte
Cobalah online!
sumber
3%
bagianPyth, 39
Sangat mirip dengan solusi fizzbuzz standar, hanya dengan generator untuk angka-angka Fibonacci.
Coba di sini
sumber
C #,
498392320 byteSaya hanya benar-benar ingin melakukan ini dengan LINQ, sayang sekali saya harus menulis fungsi jumlah saya sendiri untuk BigInteger yang benar-benar membunuhnya :-(
Tidak Disatukan:
Sunting: Turun hingga 320 byte, terima kasih kepada LegionMammal978 untuk saran agregat dan terima kasih kepada jawaban C # olegz untuk singkatan x% 6 untuk X% 2 && x% 3 serta penggunaan operator ternary dalam satu pernyataan WriteLine.
sumber
Aggregate
fungsi LINQ?Python 2,
171121 byte"Pendekatan kekerasan."
sumber
Javascript,
93 9086 Bytessumber
a=[b,b=a+b][0]
keb=a+b,a=b-a
. Juga, dalam nada yang sama sekali tidak terkait, saya suka cara Anda menjawab sangat cepat di Stack Overflow hehe SelamatPython 2, 100 byte
Untuk angka besar, tambahkan a
L
ke ujung yang menunjukkan angka panjang.Jika itu masalah, berikut adalah solusi 104 byte
sumber
for
loop menggunakan tip ini: codegolf.stackexchange.com/a/5047/42736 . Secara khususexec
ujungnya terlihat bagus.exec <program_string>*n
triknya. Bagus!Javascript (ES6),
137134 byteFungsi rekursif yang menghitung fibonnacci, memasukkannya ke dalam array kemudian menampilkan Fibo, Nacci atau nomor dan memanggil dirinya untuk menghitung berikutnya hingga 100.
Itu rusak di 73 karena ketepatan Nomor javascript. Satu-satunya cara untuk menyiasatinya adalah dengan menambahkan perhitungan bit sendiri.
sumber
5527939700884757 + 8944394323791464 = 14472334024676220
kapan seharusnya14472334024676221
karena JavaScript menggunakan float presisi 16 bit dan yang membutuhkan presisi 17 bit. Anda juga harus mencetak1
dua kali.QBasic,
144141 byteTidak terlalu kecil, tapi ini mengalahkan C ++ dan C #
Tidak ada deklarasi, gunakan
:
sedapat mungkin karena 1 byte lebih murah daripadaCRLF
. Awalan 0 ke penghitung lingkaran: Dasar akan meluap pada karakter Fibonacci ke-47, jadi ganti rugi untuk byte tambahan yang seharusnya ada.EDIT: Neil menyelamatkan saya 3 byte: 141 byte.
sumber
a$+
karena dikenal sebagai string kosong pada titik ini.Bahasa Wolfram, 84 byte
Agak curang tentu saja, karena built in
Fibonacci
.Contoh perintah untuk menjalankan skrip
sumber
Perl, 74 byte
Membutuhkan opsi baris perintah berikut:,
-lMbigint
dihitung sebagai 8.Contoh Penggunaan
Perl, 79 byte
Sama seperti di atas, tanpa memerlukan opsi baris perintah apa pun.
sumber
GolfScript, 47 byte
Penjelasan
sumber
PARI / GP,
7673 byteDisimpan tiga byte milik Mitch Schwartz .
Contoh Penggunaan
sumber
for(i=b=!a=1,99,b=a+a=b; ...
fibo
;)> <>,
128119 byteSaya
tanpa malu-malu mencurimeminjam program FizzBuzz program yang ada dan memodifikasinya untuk bekerja untuk urutan Fibo Nacci.Ini menghasilkan angka selamanya.Sekarang sudah diperbaiki, yaitu hanya menghasilkan 100 angka. Coba di sini .sumber
Pyth, 51 byte
Menghasilkan urutan Fibonacci kemudian memutuskan apa yang akan dicetak.
Untuk menguji, coba ini (hanya melakukan 20 angka pertama)
sumber
Clojure, 127 byte
Tidak Disatukan:
Beberapa trik yang digunakan:
def
yang memberikan urutan Fibonacci itu sendiri dicuri tanpa malu-malu dari Konrad Garus .str
dapat mengambil simbol sebagai input. Gila kan?if
dalam beberapa kasus.sumber
lazy-cat
?[1 1]
) dengan hasil menjumlahkan setiap elemen dalam deret Fibonacci dengan elemen yang mengikutinya.fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
?CJam, 44 byte
Cobalah online di juru bahasa CJam .
sumber
dc,
1008979 byteTerinspirasi oleh http://c2.com/cgi/wiki?DeeCee
sumber
Javascript (ES2015), 99 byte
Tidak Disatukan:
sumber
alert
sebagai ganticonsole.log
; itu memotong beberapa byte.F #,
202 163149 byteIni adalah file FSX (F # script)
sumber
PHP, 75 byte
Sangat kompetitif. Requres PHP v5.5 atau lebih tinggi. Saya menganggap pengaturan default, karena mereka tanpa .ini (Anda dapat menonaktifkan .ini lokal Anda dengan
-n
opsi).Contoh Penggunaan
sumber
-n
bcadd
tidak berfungsi bahkan ketikabcmath
diinstal. Tanpa-n
banyak hal adalah output pada stderr.Prolog, 182 byte
Cobalah online di sini
Untuk menjalankan program, gunakan kueri:
sumber