Anda harus menulis program yang mengevaluasi string yang akan dimasukkan ke dalam kalkulator tingkat lanjut.
Program harus menerima input menggunakan stdin dan menampilkan jawaban yang benar. Untuk bahasa yang tidak memiliki fungsi untuk menerima stdin, Anda dapat mengambil fungsi readLine
dan print
untuk menangani tugas ini.
Persyaratan:
- Tidak menggunakan segala jenis fungsi "eval"
- Dapat menangani floating point dan angka negatif
- Mendukung setidaknya operator +, -, *, /, dan ^
- Mendukung tanda kurung dan tanda kurung untuk mengganti urutan normal
- Dapat menangani input yang berisi satu atau beberapa ruang antara operator dan angka
- Mengevaluasi input menggunakan urutan operasi standar
Uji Kasus
Memasukkan
10 - 3 + 2
Keluaran
9
Memasukkan
8 + 6 / 3 - 7 + -5 / 2.5
Keluaran
1
Memasukkan
4 + [ ( -3 + 5 ) * 3.5 ] ^ 2 - 12
Keluaran
41
.0
akhir jika mereka bilangan bulat? Juga: seberapa akurat kalkulator harus (mengenai presisi floating point dan semacamnya)?.0
di ujungnya. Saya tidak terlalu yakin tentang presisi, tetapi lebih banyak lebih baik.Jawaban:
C ++,
640583Bertakuk
Golf kode pertama saya, sangat menantikan komentar & kritik!
sumber
using namespace std
dan fungsi utama tidak terlalu oke, bukan?PHP -
394354312 karakterBertakuk:
sumber
Catatan tambahan, 446
Ini menggunakan algoritma halaman shunting.
Berhenti bermain golf dan berkomentar:
TODO : Asosiatif -kanan eksponen
sumber
Python 2 ,
339335 byteCobalah online!
sumber
Catatan tambahan,
1000695665494Mencuri ide dari ThomasW.
Fitur yang ditambahkan: menerima string dengan atau tanpa spasi di sekitar operator.[fitur dihapus]Menggunakan
ARGUMENTS
lebih pendek daripada%stdin
, dan lebih mudah untuk menguji, untuk boot!Substitusi yang disederhanakan untuk hanya mengganti tanda kurung dengan parens.
Kode:
Tidak dikumpulkan dan berkomentar:
sumber