Saya mencoba membuat konverter dari notasi postfix ke notasi infix dan butuh bantuan. Sudah ada pertanyaan tentang konversi infix-to-postfix, yang mana memberi contoh saya gagal mengkonversi kembali. (Catatan: tanda minus tidak ada di sana!)
Berikut ini adalah output dari konverter saya, di mana "kolom" pertama adalah input postfix, kolom ke-2 adalah output infix saya, dan kolom ke-3 adalah apa yang mungkin harus saya dapatkan (?):
2 - = - 2 =? - 2 true
1 + 2 + = + 1 + 2 =? + 1 + 2 true
1 + 2 + + = + (+ 1 + 2) =? + 1 + + 2 false
1 + 2 + + 3 - - 4 - - = - (- (+ (+ 1 + 2) - 3) - 4) =? + 1 + + 2 - - 3 - - 4 false
Menurut Anda apakah masalah ini dapat diselesaikan, atau dua baris terakhir benar-benar dikonversi dengan benar? Bagaimana Anda menulis algoritma untuk mengatasi masalah ini?
Harap asumsikan bahwa lebih banyak operator (tidak hanya +
dan -
) yang dapat ditetapkan sebagai unary dan biner, di mana operator unary memiliki prioritas lebih tinggi daripada operator biner.
Referensi
- Ruby Quiz #148: Postfix ke Infix, juga melalui Google Grup
- Algoritma shunting-yard (C, Python, Perl) dengan dukungan operator unary di LiteratePrograms