Terkait: Halo dunia !!! Distribusi fibonacci
Buat program yang mengembalikan True jika input yang diberikan memenuhi spesifikasi berikut, dan False sebaliknya:
- Hitungan karakter numerik (0-9) pada input cocok dengan angka Fibonacci.
- Hitungan karakter non-numerik! (0-9) pada input cocok dengan angka Fibonacci segera sebelum hitungan karakter numerik.
Aturan tambahan:
- Program Anda harus menggunakan urutan Fibonacci yang tepat, per OEIS - artinya, urutan Fibonacci harus dimulai dengan
0, 1, 1, 2, ...
- Jika jumlah numerik atau non-numerik adalah 1, berikut ini harus terjadi:
- Numerik 1: Hitungan non-numerik 0 atau 1 harus ditangani sebagai Benar - semua yang lain Salah.
- Non-Numerik 1: Hitungan angka 1 atau 2 harus ditangani sebagai Benar - semua yang lain Salah.
- Input dapat diambil sesuka Anda, tetapi program harus mampu menangani teks arbitrer apa pun.
- Benar / Salah tidak peka terhadap huruf besar-kecil, dan dapat diganti dengan 1/0 atau T / F.
- Anda hanya dapat melakukan hard-code hingga dua angka Fibonacci.
- Output mungkin hanya Benar / Salah atau 1/0 atau T / F. Teks tambahan atau kesalahan yang terlihat yang dihasilkan tidak dapat diterima.
Jawaban:
Golfscript, 36
Penjelasan:
:?
menyimpan input ke?
.1 2{.@+.?,<}do
menghitung dua angka fibonacci terakhir sampai menyentuh panjang input. Blok itu berbunyi: "duplikat atas, putar nilai ketiga ke atas, tambahkan, duplikat atas, dapatkan input, dapatkan panjangnya, bandingkan".?,=
membandingkan angka fibonacci yang dihitung terakhir dengan panjang input.@
membawa input ke atas{.48<\58<^},
memfilter hanya digit. Blok bertuliskan "apakah nilai ASCII di bawah 48 XOR di bawah 58?",@=
membandingkan panjang string yang difilter ke angka fibonacci yang lebih rendah (hitungan digit)*
menggabungkan kedua perbandingan untuk memberikan nilai boolean tunggal.Demo langsung: http://golfscript.apphb.com/?c=OyIvMDU5OiIKOj8xIDJ7LkArLj8sPH1kbz8sPUB7LjQ4PFw1ODxefSwsQD0q
sumber
Javascript,
92 8886 karakterSaya harap Anda tidak keberatan saya telah membuat kode keras untuk tiga angka Fibonacci pertama.
sumber
a
tidak perlu inisialisasi. Adapun mengapa saya mulai dari 1,2,3 - poster tantangan awal tidak menerima1
segera seperti sebelumnya1
.Python -
128125Sangat berharap tidak ada masalah dengan pengodean angka-angka fibonacci pertama
sumber
Perl, 92
Pemakaian:
sumber
Python 3
(105 karakter)
Nama file skrip diteruskan ke program melalui baris perintah
(87 karakter)
Script harus ditulis dalam file dengan nama 's'
sumber
Jawa -
147145Saya akan mengatakan ini tidak buruk untuk Jawa.
Sunting : Terima kasih kepada Chris Hayes karena menyarankan
0>1
untuk yang salah dan yang0<1
benar.sumber
1==0
untuk menghemat karakter, Anda dapat menggunakannya0<1
sebagai penggantitrue
, dan0>1
untukfalse
.APL, 34 karakter / byte *
Mengharapkan string input pada input standar dan mencetak 0 atau 1 sesuai kebutuhan.
⎕IO
harus ditetapkan ke 0 (standarnya tergantung pada implementasi.)Tidak disatukan
Contohnya
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL dapat ditulis dalam charset byte tunggal (lama) yang memetakan simbol APL ke nilai 128 byte atas. Oleh karena itu, untuk tujuan penilaian, program karakter N yang hanya menggunakan karakter ASCII dan simbol APL dapat dianggap sebagai panjang N byte.
sumber
Ruby, 85
Mengambil input baik pada
STDIN
atau sebagai argumen nama file.Outputnya adalah
"true"
atau"false"
.sumber