Tantangan
Diberikan input integer, kembalikan angka Fibonacci pertama yang berisi input itu sendiri bersama dengan indeks angka Fibonacci tersebut (indeks mulai dari 0 atau 1 - terserah Anda, tetapi tolong sebutkan yang mana dalam jawaban Anda). Misalnya, jika diberi input 12, program akan kembali 26: 121393
karena 12 ditemukan dalam angka ( 12 1393) dan berada pada indeks 26 dari angka Fibonacci.
Contohnya
Diberikan input:
45
Program Anda harus menampilkan:
33: 3524578
Memasukkan:
72
Keluaran:
54: 86267571272
Memasukkan:
0
Keluaran:
0: 0
Memasukkan:
144
Keluaran:
12: 144
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat di setiap bahasa menang.
Jawaban:
Jelly , 10 byte
Cobalah online!
Bagaimana itu bekerja
sumber
D
...Python 2 , 56 byte
Cobalah online!
sumber
Perl 6 , 30 byte
Cobalah online!
first
adalah fungsi yang mengembalikan elemen pertama dari urutan yang lulus tes, dan dengan mudah mengambil:kv
kata keterangan yang memberitahukannya untuk mengembalikan kunci (indeks) dan nilai yang cocok.sumber
:p
kata keterangan dan bukan:kv
.Batch, 104 byte
Berfungsi
n=0..45
karena rentang terbatas dari aritmatika integer Batch. Penjelasan: Batch tidak memiliki uji kecocokan bawaan, tetapi ia memiliki operator yang dapat mengganti string literal dengan string literal lainnya, jadi misalnyaif "%s:l=%"=="%s%"
benar jika%s%
tidak kosong tetapi tidak mengandungl
. Penggunaancall
kemudian merupakan trik untuk mengganti%1
(input) ke dalam operator pengganti, namuncall
tidak bekerja pada laporan aliran kontrol sehingga tugas sementara antara diperlukan.sumber
Jelly , 15 byte
Cobalah online!
sumber
Javascript ES6, 68 karakter
Uji:
sumber
Python 3, 76 byte
sumber
Emojicode , 133 byte
Cobalah online!
sumber
Dyalog APL, 39 byte
Menggunakan rekursi ekor. Jangan coba 72, itu akan merusak mesin Anda karena menghitung ulang fibonacci di setiap panggilan.
Cobalah online!
sumber
Mathematica, 119 byte
1-diindeks
Cobalah online!
sumber
Sebenarnya , 13 byte
Cobalah online!
Penjelasan:
sumber
R, 65 byte
Rekursi standar untuk menghasilkan Fibnums, tetapi bukannya berhenti berdasarkan
n
, berakhir saatb
cocok dengan regexx
. Ini sebenarnya bekerja sangat baik. Saya berasumsi bahwa menggunakan regex dengan angka akan membutuhkan banyak kerumitan untuk mengubahnya menjadi string, tetapi itu sepertinya tidak perlu :)Ini juga memiliki overshoot rekursi dengan 1 langkah, dengan memeriksa pada
b
bukana
dan kemudian mengurangkan1
darin
. Ini untuk memastikanf(0)
bekerja dengan baik.Ini gagal untuk sebagian besar nilai ketika input melebihi
1001
, karena maksint. Jika kami menggantia
danb
untuk bigints, ini bekerja untuk input yang lebih tinggi (pengujian saat ini dix = 11451
)sumber
JavaScript ES6,
797875 byte-1 byte oleh Langkah Hen
-3 byte oleh Neil
sumber
eval()
alih-alih{ return}
untuk menyimpan byte, dan Anda dapat menghapus bytet=
karena Anda tidak menggunakan rekursi:i=>eval('d=a=b=1;while(!~(a+"").indexOf(i+""){c=b;b=a+b;a=c;d++};d+": "+a')
String.prototype.indexOf
secara otomatis mengubah parameternya menjadi string, tidak perlu melakukannya secara eksplisit. Anda juga tampaknya telah menyalin kesalahan ketik @ StepHen (Anda memiliki lebih(
dari)
s).C # (.NET Core) , 99 byte
Cobalah online!
Mengambil input sebagai integer, mengembalikan string dengan output.
sumber
Haskell , 84 byte
Cobalah online!
sumber
PHP, 80 byte
Scriptnya cukup mudah, hanya menyimpan syarat urutan saat ini dan selanjutnya dalam $ a dan $ b secara keseluruhan. Untuk memungkinkan istilah 0 dari 0, $ a dan $ b awalnya diberi nilai untuk istilah -1th (1) dan 0th (0) masing-masing.
Kedua nilai dihitung ulang dalam satu ekspresi, yang merupakan dua penugasan dalam satu; secara efektif:
Jika nilai input cocok dengan awal istilah, fungsi strpos () akan mengembalikan 0 (yang falsey dan akan memberikan negatif palsu), tetapi di Dunia PHP PHP, meskipun
false == 0
benar danfalse < 0
salah,false < -1
itu benar! Jadi, menggunakan perbandingan ini menghemat lima byte dibandingkan dengan!==false
.sumber
Japt ,
1714 byteDisimpan 3 byte berkat @JustinMariner
Cobalah online!
Penjelasan
sumber
_ŬøU}a@[XMgX]
. Menggunakans1 q
untuk mendapatkan item terakhir, yang memungkinkan menjatuhkan<space>s
PHP ,
163141 byteCobalah online!
Penggunaan
$b[0] = 0;
dan$b[1] = 1;
untuk memulai urutan fibsumber
Perl 5 , 67 + 1 (-p) = 68 byte
Cobalah online!
sumber
PHP , 93 byte
Simpel sederhana melalui urutan Fibonacci. Pemeriksaan untuk nomor input kami dilakukan di
strpos(" $a[$i]","$argv[1]")
; ruang ekstra karenastrpos
akan mengembalikan false-y jika 'jarum' ditemukan di awal string. Kami berakhir jika input ditemukan dan menggemakan string yang diperlukan.Cobalah online!
sumber
Gangguan Umum, 105 byte
Cobalah online!
sumber