Diberikan N (2 <= N ), cetak N baris seri Fibonacci huruf seperti ini (yaitu N = 5) Pertama, mulai dengan a
dan b
:
a
b
Selanjutnya, tambahkan dua baris.
a
b
ab
Terus tambahkan dua baris terakhir.
a
b
ab
bab
Teruskan...
a
b
ab
bab
abbab
Dan kita sudah selesai.
Ingat, ini adalah kode-golf , jadi kode dengan byte paling sedikit menang.
Jawaban:
Python 2, 41 byte
Disimpan 3 byte berkat @xnor
Uji Ideone
Cukup ikuti definisi rekursif.
sumber
a,b="ab";exec"print a;a,b=b,a+b;"*input()
.Haskell,
293532 byteRekursi sederhana.
Untuk referensi: versi lama (adaptasi dari jawaban ini ), merangkai string dalam urutan yang salah, jadi saya harus menambahkan
flip(...)
yang membuatnya terlalu lama (35 byte).sumber
["b","a","ab","aba","abaab"]
05AB1E ,
1211 byteTerima kasih kepada Emigna karena telah menghemat satu byte!
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
̓
mungkin sajaG
Anda tidak menggunakanN
:)Jelly ,
1110 byteCobalah online!
Bagaimana itu bekerja
sumber
”a”b;@Ṅ
bagian bawah, tapi saya tidak tahu harus ke mana harus pergi dari sana ... sekarang saya tahu :-)Java 7, 69 byte
ungolfed
sumber
a
danb
. Saya tidak yakin apakah"a"
dan"b"
parameter harus dihitung terhadap byte-count, karena pertanyaan secara khusus menyatakan itu harus digunakana
danb
. Lagipula, Java tidak akan pernah menang. ;)"a"
dan"b"
) daripada 69 karena tantangan yang secara spesifik memintaa
danb
, dan kode-snipped / metode saat ini menggunakan input variabel. Tidak yakin apa aturannya mengenai hal seperti ini, tapi saya pribadi berpikir itu harus diperhitungkan. Kalau tidak, Anda bisa dalam beberapa bahasa memiliki fungsi yang mengeksekusi fungsi parameter, dan kemudian cukup memberikan seluruh fungsi-tantangan dalam parameter tanpa menghitung byte-nya. Kedengarannya seperti jenis aturan celah standar.Emacs,
26, 25-ish penekanan tombolProgram
#nuntuk dibaca sebagai kunci dengan angka n :
ARETBRETF3UPUPC-SPACEC-EM-WDOWNDOWNC-Y UPC-AC-SPACEC-EM-WDOWNC-EC-YRETF4C-#(n-2)F4
Penjelasan
Dengan n = 10
sumber
JavaScript (ES6),
4342 byteMenyimpan satu byte berkat @Arnauld
sumber
CJam,
1917 bytepenjelasan
sumber
p
harus a;
. Anda dapat menghilangkan tanda kutip di sekitar output jika Anda menggunakann
bukanp
. Akhirnya,'a'b
menghemat dua byte"a""b"
.V , 18 byte
Cobalah online!
Atau, versi yang lebih mudah dibaca:
Penjelasan:
sumber
MATL , 14 byte
Cobalah online!
sumber
Python 2, 55 byte
sumber
Retina , 33 byte
Cobalah online!
Disimpan 10 (!) Byte berkat @ MartinEnder !
Penjelasan
Mengonversi input menjadi unary, mengurangi
2
dan menambahkan,a
danb
, kemudian secara rekursif menggantikan yang tersisa1
dengan gabungan dari dua string sebelumnya.sumber
$%`
! dan tangkapan lain itu hanya perencanaan yang buruk ... Luar biasa, terima kasih!Batch,
10293 byteUntungnya variabel diperluas untuk setiap baris sebelum penugasan berlaku, jadi saya bisa mengatur keduanya
a
danb
menggunakan nilai lama mereka tanpa perlu sementara. Sunting: Disimpan 9 byte berkat @ nephi12.sumber
for /l %%i in (2,1,%1) etc..
@set a=a&set b=b
seperti yang Anda lakukan dengan yang terakhir. meskipun secara teknis mereka semua bisa berada di jalur yang sama ... tapi itu akan menjadi jelek ... hmm ...Stack my Golf, 63 byte
Dapatkan bahasa saya di sini: https://github.com/cheertarts/Stack-My-Golf .
Mungkin ada cara yang lebih pendek tetapi ini adalah yang paling jelas.
sumber
Perl,
3635 byteTermasuk +3 untuk
-n
Berikan penghitungan pada STDIN
fibo.pl
sumber
Perl, 45 +1 = 46 byte
+1 byte untuk flag -n
Peningkatan sedikit atas solusi 49-byte yang ada, tetapi dikembangkan secara terpisah. Tanda kurung
say($a)
diperlukan karena jika tidak, tanda kutip$a,($a,$b)=($b,$a.$b)
sebagai argumensay
yang menghasilkan lebih banyak sampah daripada yang kita butuhkan.Perl, 42 byte
Pendekatan terpisah dari solusi di atas:
Saya belum yakin bahwa saya tidak dapat menggabungkan transliterasi dan penggantian menjadi operasi tunggal yang lebih pendek. Jika saya menemukan satu, saya akan mempostingnya.
sumber
Swift 3, 76 Bytes
sumber
Perl, 48 byte
47 byte kode +1 untuk
-n
.Pendekatan sederhana. Coba gunakan irisan array awalnya
$a[@a]="@a[-2,-1]"
tapi itu mengharuskan$"=""
atau serupa :(. Simpan 1 byte berkat @ Dada !Pemakaian
sumber
@;
alih-alih@a
agar Anda dapat menghilangkan titik koma akhir (lihat apa yang saya maksud?). (Saya tahu, satu byte cukup murah tapi saya tidak punya ide yang lebih baik ..)perl -pe '@;=(a,b);$;[@;]=$;[-2].$;[-1]for 3..$_;say for@' <<< 5 syntax error at -e line 1, at EOF Execution of -e aborted due to compilation errors.
tetapi tidak berpikir itu akan adil untuk ditambahkan sebagai jawaban jika saya tidak bisa buat itu bekerja!-pe
bukan-nE
? Bagaimanapun, ini bekerja pada saya, jadi itu mungkin terkait dengan versi perl atau sistem Anda ... Tapi percayalah, saya mengujinya dan berfungsi! ;)-nE
juga (tidak tahu dari mana-pe
asalnya! Pasti hari Jumat ...) Saya akan memperbarui itu ketika saya mendapat mo! Terima kasih telah berbagi!SOML , 8 byte (tidak bersaing)
penjelasan:
Alasan ini tidak bersaing adalah karena bahasa ini masih dalam pengembangan dan saya memang menambahkan beberapa fungsi baru saat menulis ini.
Juga, pos pertama di PPCG!
sumber
05AB1E, 15 byte
sumber
C , 156 byte (tanpa indentasi)
Dua buffer (u & v) menyimpan dua baris terakhir. Baris terbaru (dilacak dengan dua petunjuk: start = c, end = d) ditambahkan ke yang terlama (start = a, end = b). Tukar (a, b) dan (c, d), dan loop. Perhatikan ukuran buffer sebelum meminta terlalu banyak baris. Tidak terlalu pendek (seperti yang diharapkan dari bahasa tingkat rendah), tetapi menyenangkan untuk dikodekan.
sumber
5
tetapi itu harus input penggunaGiven N (2 <= N), print N lines of the letter Fibonacci series like this (i.e. N = 5)
N
dan tidak tetap. Atau pengguna mungkin seseorang yang menggunakan fungsi / program Anda.PHP,
6362 byteVersi rekursif:
sumber
return
Pyth , 17 byte
Program yang mengambil input bilangan bulat dan mencetak hasilnya.
Cobalah online!
Bagaimana itu bekerja
sumber
Pyth -
1615 byteCobalah online di sini .
sumber
APL, 30 byte.
⎕IO
harus1
.sumber
Mathematica, 49 byte
Menentukan fungsi yang
g
mengambil input numerik tunggal; mengembalikan daftar string. Implementasi rekursif langsung, menggunakan operator string-join<>
.Mathematica, 56 byte
Fungsi yang tidak disebutkan namanya, format input / output yang sama seperti di atas. Solusi ini menggunakan cara alternatif untuk menghasilkan string: setiap string dalam daftar adalah hasil dari penggantian secara bersamaan, dalam string sebelumnya, semua kemunculan "a" dengan "b" dan semua kemunculan "b" dengan "ab".
sumber
Groovy, 79 Bytes
sumber
PHP, 53 byte
sumber
$b
dalam string.C ++ 11,
8998 byte+7 byte untuk semua baris, tidak hanya yang terakhir. +2 byte lebih banyak karena
N
jumlah baris yang dicetak, bukan beberapa hal berbasis 0.Pemakaian:
sumber
Ruby (1.9+) 46 byte
sumber