Terkadang berguna untuk menjalankan masalah matematika dengan beberapa input. Tujuan dari tantangan ini adalah membuat program yang memudahkan tugas ini.
Ekspresi yang menghasilkan angka
Anda harus mendukung 3 jenis ekspresi:
- Generator nomor tunggal: Sangat sederhana, hanya angka literal
- Generator multi-angka: Sedikit lebih rumit. Mereka dikelilingi oleh tanda kurung (
[]
). Angka adalah koma (,
) dipisahkan dalam ekspresi. Contoh[-1,2,3.26]
. - Range generator: Yang ini dikelilingi oleh kurung kurawal (
{}
). Ini akan memiliki 3 angka yang dipisahkan oleh koma. Format ungkapan ini adalah{start,stop,step}
.start
danstop
inklusif.
Aturan untuk evaluasi
- Anda harus mendukung urutan operasi. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- Anda tidak perlu mendukung tanda kurung.
- Sejumlah spasi dapat terjadi dalam ekspresi.
- Anda harus mendukung angka floating point (apa pun ketepatan bahasa yang Anda gunakan tidak masalah)
- Pembagian berdasarkan
0
hasilNaN
(bukan angka).
Program Anda harus mendukung multiplikasi ( *
), pembagian ( /
), penjumlahan ( +
) dan pengurangan ( -
).
Keluaran
Setiap jalur output adalah salah satu kombinasi dari generator. Formatnya adalah ekspresi (dengan bilangan real diganti dengan itu) diikuti oleh tanda sama dengan ( =
) dan hasil evaluasi. Semua kombinasi generator harus diwakili dalam output.
Contohnya
( >>>
menunjukkan input)
>>>3 * [3,2]
3 * 3 = 9
3 * 2 = 6
>>>{1,2,3}
1 = 1 <-- this is because 1 + 3 > the end
>>>{0,2,1} + {0,1,1}
0 + 0 = 0
1 + 0 = 1
2 + 0 = 2
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
>>>6/[2,3]
6/2 = 3
6/3 = 2
>>>{1.5,2.5,0.5}
1.5 = 1.5
2 = 2
2.5 = 2.5
>>>3-{6,5,-1}
3-6 = -3
3-5 = -2
>>>5/{-1,1,1}
5/-1 = -5
5/0 = NaN
5/1 = 5
>>>4.4 / [1,2.2] + {0,2,1}
4.4 / 1 + 0 = 4.4
4.4 / 1 + 1 = 5.4
4.4 / 1 + 2 = 6.4
4.4 / 2.2 + 0 = 2
4.4 / 2.2 + 1 = 3
4.4 / 2.2 + 2 = 4
>>> [1,2] / 0 + 5
1 / 0 + 5 = NaN
2 / 0 + 5 = NaN
Program ini harus singkat sehingga saya dapat mengingatnya dan menggunakannya di mana saja.
Terima kasih kepada @PeterTaylor dan @geokavel karena membantu saya dengan pos ini di kotak pasir
x/0
menghasilkan evaluasi instan ke NaN, atau apakah saya harus memperlakukan NaN sebagai suatu nilai?