Saya sedang menjelajahi esolang, dan kebetulan menggunakan bahasa ini: https://github.com/catseye/Quylthulg .
Satu hal yang menarik tentang bahasa ini, adalah bahwa ia tidak menggunakan awalan, postfix, atau infix, ia menggunakan ketiganya , menyebutnya "panfix" notasi.
Berikut ini sebuah contoh. Untuk mewakili infiks yang normal 1+2
di panfix, menjadi: +1+2+
. Perhatikan bagaimana operator keduanya sebelum, di antara, dan setelah operan. Contoh lain adalah (1+2)*3
. Ini menjadi *+1+2+*3*
. Perhatikan lagi bagaimana *
di ketiga tempat sehubungan dengan operan +1+2+
dan 3
.
Tantangan
Seperti yang sudah Anda tebak, tugas Anda dalam tantangan ini adalah mengubah ekspresi dari infix ke panfix.
Beberapa klarifikasi:
- Anda hanya perlu berurusan dengan empat operasi dasar:
+-*/
- Anda tidak perlu berurusan dengan versi unary itu, hanya biner
- Anda harus berurusan dengan tanda kurung
- Asumsikan aturan presedensi normal
*/
saat itu+-
dan tinggalkan asosiasi untuk mereka semua. - Angka-angka akan menjadi bilangan bulat tidak negatif
- Secara opsional Anda dapat memiliki spasi di input dan output
Uji Kasus
1+2 -> +1+2+
1+2+3 -> ++1+2++3+
(1+2)*3 -> *+1+2+*3*
10/2*5 -> */10/2/*5*
(5+3)*((9+18)/4-1) -> *+5+3+*-/+9+18+/4/-1-*
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
S.split``
seharusnya[...S]
, meskipun sebenarnya bisa membantu untuk mencocokkan di/\d+|./g
muka dan bekerja sebagai gantinya.