Pengantar:
Terinspirasi oleh diskusi yang sudah berlangsung selama bertahun-tahun mengenai ungkapan .
Dengan ekspresi , matematikawan akan segera melihat bahwa jawaban yang benar adalah , sedangkan orang-orang dengan latar belakang matematika sederhana dari sekolah akan dengan cepat melihat bahwa jawaban yang benar adalah . Jadi dari mana kontroversi ini dan karena itu jawaban yang berbeda datang? Ada dua aturan yang saling bertentangan tentang bagaimana ditulis. Satu karena bagian
2(
, dan satu lagi karena simbol pembagian÷
.Meskipun ahli matematika dan 'orang awam' akan menggunakan PEMDAS (Parenthesis - Exponents - Division / Multiplication - Addition / Subtraction), untuk matematikawan ekspresi dievaluasi seperti ini di bawah ini, karena sama seperti misalnya monomial alias " satu istilah karena penggandaan tersirat oleh penjajaran " (dan karena itu bagian dari
P
dalamPEMDAS
), yang akan dievaluasi secara berbeda dari (binomial alias dua istilah):
Sedangkan untuk 'orang biasa', dan akan sama (dan karena itu bagian dari
MD
dalamPEMDAS
), jadi mereka akan menggunakan ini sebagai gantinya:
Namun, bahkan jika kita akan menulis ekspresi asli sebagai , masih ada beberapa kontroversi karena penggunaan simbol pembagian ÷
. Dalam matematika modern, /
dan ÷
simbol memiliki arti yang sama persis: membagi. Beberapa aturan pra-1918 † mengenai simbol pembagian ÷
†† menyatakan bahwa ia memiliki makna yang berbeda dari simbol pembagian /
. Ini karena ÷
digunakan untuk berarti " membagi angka / ekspresi di sebelah kiri dengan angka / ekspresi di sebelah kanan " ††† . Jadi kemudian, akan atau sekarang. Dalam hal iniakan dievaluasi seperti ini oleh orang-orang sebelum tahun 1918:
†: Meskipun saya telah menemukan banyak sumber yang menjelaskan bagaimana ÷
digunakan di masa lalu (lihat ††† di bawah), saya belum dapat menemukan bukti yang pasti bahwa ini berubah di suatu tempat sekitar tahun 1918. Tetapi demi tantangan ini kami menganggap 1918 adalah titik balik di mana ÷
dan
/
mulai berarti hal yang sama, di mana mereka berbeda di masa lalu.
††: Simbol-simbol lain juga telah digunakan di masa lalu untuk pembagian, seperti
:
pada 1633 (atau sekarang masih di Belanda dan negara-negara berbahasa non-Inggris Eropa lainnya, karena ini adalah apa yang saya pelajari secara pribadi di sekolah dasar xD) atau)
di 1540-an. Tetapi untuk tantangan ini kita hanya fokus pada makna simbol obelus pra-1918÷
.
†††: Sumber: artikel ini secara umum . Dan pra-1918 aturan mengenai÷
disebutkan dalam: ini The Amerika matematika Bulanan artikel dari Februari 1917 ; buku Aljabar Teutsche Jerman ini dari 1659 halaman 9 dan halaman 76 ; ini Sebuah Buku Pertama di Aljabar dari 1895 halaman 46 [48/189] .Agak di luar topik: mengenai diskusi aktual tentang ungkapan ini: Ini seharusnya tidak pernah ditulis seperti ini sejak awal! Jawaban yang benar tidak relevan, jika pertanyaannya tidak jelas. * Klik tombol "tutup karena tidak jelas apa yang Anda minta" * .
Dan sebagai catatan, bahkan versi kalkulator Casio yang berbeda tidak tahu cara menangani ungkapan ini dengan benar:
Tantangan:
Anda diberi dua input:
- Ekspresi matematis (valid) yang hanya terdiri dari simbol
0123456789+-×/÷()
- Tahun
Dan Anda output hasil dari ekspresi matematika, berdasarkan tahun (mana ÷
yang digunakan berbeda ketika , tapi digunakan persis sama seperti /
ketika ).
Aturan tantangan:
- Anda dapat menganggap ekspresi matematika itu valid dan hanya menggunakan simbol
0123456789+-×/÷()
. Ini juga berarti Anda tidak perlu berurusan dengan eksponensial. (Anda juga diperbolehkan menggunakan simbol yang berbeda untuk×
atau÷
(yaitu*
atau%
), jika itu membantu golf atau jika bahasa Anda hanya mendukung ASCII.) - Anda diizinkan untuk menambahkan pembatas-ruang ke ekspresi-input jika ini membantu evaluasi (mungkin manual) ekspresi.
- I / O fleksibel. Input dapat berupa string, karakter-array, dll. Tahun dapat sebagai integer, objek-tanggal, string, dll. Output akan berupa angka desimal.
- Anda dapat mengasumsikan tidak akan ada pembagian dengan 0 kasus uji.
- Anda dapat menganggap angka-angka dalam ekspresi-input akan menjadi non-negatif (sehingga Anda tidak harus berurusan dengan membedakan
-
simbol negatif vs-
sebagai simbol pengurangan). Namun output masih bisa negatif! - Anda dapat menganggap
N(
akan selalu ditulis sebagaiN×(
gantinya. Kami hanya akan fokus pada kontroversi kedua simbol divisi/
vs÷
dalam tantangan ini. - Nilai output desimal harus memiliki ketepatan setidaknya tiga digit desimal.
÷
)- Perhatikan bahwa cara
÷
kerjanya secara implisit berarti memiliki prioritas operator melebihi×
dan/
(lihat test case). - Anda dapat menganggap tahun input berada dalam kisaran .
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input-expression: Input-year: Output: Expression interpretation with parenthesis:
6÷2×(1+2) 2018 9 (6/2)×(1+2)
6÷2×(1+2) 1917 1 6/(2×(1+2))
9+6÷3-3+15/3 2000 13 ((9+(6/3))-3)+(15/3)
9+6÷3-3+15/3 1800 3 (9+6)/((3-3)+(15/3))
4÷2÷2 1918 1 (4/2)/2
4÷2÷2 1900 4 4/(2/2)
(1÷6-3)×5÷2/2 2400 -3.541... ((((1/6)-3)×5)/2)/2
(1÷6-3)×5÷2/2 1400 1.666... ((1/(6-3))×5)/(2/2)
1×2÷5×5-15 2015 -13 (((1×2)/5)×5)-15
1×2÷5×5-15 1719 0.2 (1×2)/((5×5)-15)
10/2+3×7 1991 26 (10/2)+(3×7)
10/2+3×7 1911 26 (10/2)+(3×7)
10÷2+3×7 1991 26 (10/2)+(3×7)
10÷2+3×7 1911 0.434... 10/(2+(3×7))
4÷2+2÷2 2000 3 (4/2)+(2/2)
4÷2+2÷2 1900 2 4/((2+2)/2)
4÷2×2÷3 9999 1.333... ((4/2)×2)/3
4÷2×2÷3 0000 3 4/((2×2)/3)
((10÷2)÷2)+3÷7 2000 2.928... ((10/2)/2)+(3/7)
((10÷2)÷2)+3÷7 1900 0.785... (((10/2)/2)+3)/7
(10÷(2÷2))+3×7+(10÷(2÷2))+3×7
1920 62 (10/(2/2))+(3×7)+(10/(2/2))+(3×7)
(10÷(2÷2))+3×7+(10÷(2÷2))+3×7
1750 62 (10/(2/2))+(3×7)+(10/(2/2))+(3×7)
10÷2/2+4 2000 6.5 ((10/2)/2)+4
10÷2/2+4 0100 2 10/((2/2)+4)
9+6÷3-3+15/3 9630 13 9+(6/3)-3+(15/3)
9+6÷3-3+15/3 0369 3 (9+6)/(3-3+(15/3))
`=`=`/`
jahat! Solusi hebat!