Tantangan
Anda adalah pemilik layanan luar biasa yang disebut Coyote Beta , yang secara ajaib menjawab pertanyaan matematika yang dikirimkan penggunanya melalui internet.
Tapi ternyata, bandwidth itu mahal. Anda memiliki dua pilihan, baik membuat " Coyote Beta Pro" atau menemukan beberapa cara untuk menyelesaikannya. Baru-baru ini, seseorang bertanya (x + 2)
. Tidak bisakah klien mengirim x+2
, dan pengguna tidak akan melihat perbedaan?
Tugas
Tugas Anda adalah untuk "mengurangi" ekspresi matematika. Diberikan ekspresi input, Anda harus menyingkirkan spasi dan tanda kurung sampai memberikan representasi minimal dari input yang sama. Tanda kurung di sekitar operasi asosiatif tidak perlu dipertahankan.
Satu-satunya operator yang diberikan di sini +
, -
, *
, /
, dan ^
(eksponensial), dengan standar associativity matematika dan diutamakan. Satu-satunya spasi putih yang diberikan dalam input adalah karakter spasi aktual.
Contoh Input / Output
Input | Output
------------|--------------
(2+x) + 3 | 2+x+3
((4+5))*x | (4+5)*x
z^(x+42) | z^(x+42)
x - ((y)+2) | x-(y+2)
(z - y) - x | z-y-x
x^(y^2) | x^y^2
x^2 / z | x^2/z
- (x + 5)+3 | -(x+5)+3
Mencetak gol
Input / output dapat menggunakan metode yang disukai. Program terkecil dalam byte menang.
Bit yang tepat
Eksponensial adalah asosiatif yang benar dan juga mengikuti presedensi matematika standar (menjadi yang tertinggi). Literal numerik yang valid adalah /[0-9]+/
, dan literal variabel yang valid adalah /[a-z]+/
. Literal variabel tunggal mewakili nilai tunggal bahkan ketika panjang karakternya lebih panjang dari 1.
Apa yang dimaksud dengan "tanda kurung di sekitar operasi asosiatif tidak perlu dipertahankan" adalah bahwa output harus terdiri dari ekspresi yang menghasilkan pohon parse yang identik, dengan pengecualian bahwa operasi asosiatif dapat disusun ulang.
/[a-z]+/
, itu berarti perkalian dengan penjajaran sepertiab
tidak diizinkan?2+(3+4)
diubah2+3+4
, bukan? Ini mengubah pohon parse.x^(y/2)=x^y/2
; eksponensial memiliki prioritas lebih tinggi, ergox^y/2=(x^y)/2
,.Prompt X:expr(X)
TI-BASIC tetapi Anda tidak dapat menyederhanakan :(Jawaban:
C #,
523519504 bytePeriksa komentar dalam kode untuk melihat cara kerjanya!
Golf
Tidak disatukan
Catatan samping
PS: Jika Anda memiliki tip atau menemukan bug, beri tahu saya di komentar dan saya akan mencoba memperbaikinya (Saya kemudian akan menambahkan catatan tentang perbaikan bug dengan nama Anda;))
sumber
C ++, 284 byte
Golf
Tidak disatukan
sumber