Diberikan ekspresi aritmatika, yang dapat mencakup tanda kurung ( ()
), eksponen ( ^
), pembagian ( /
) dan perkalian ( *
), penambahan ( +
) dan pengurangan ( -
) (dalam urutan operasi itu), seperti
a ^ (2 / 3) * 9 * 3 - 4 * 6
menghasilkan ekspresi yang sama dalam notasi awalan.
(- (* (* (^ a (/ 2 3)) 9) 3) (* 4 6))
Spasi bersifat opsional dalam input maupun output. Anda dapat mengasumsikan bahwa semua operator asosiatif kiri dan bahwa semua angka dalam ekspresi adalah bilangan bulat satu digit (yaitu [0-9]
).
Ini adalah tantangan kode golf, sehingga solusi terpendek menang.
3+4-5+6 = (((3+4)-5)+6)
atau((3+4)-(5+6))
?*
dan/
memiliki prioritas yang sama, seperti halnya+
amd-
.Jawaban:
Ruby 1.9 - 134
Cukup jahat, tetapi berhasil:
sumber
Python, 222 karakter
Mirip dengan Ruby, kecuali Python tidak membiarkan Anda mendefinisikan ulang operasi global, hanya operasi kelas.
sumber
Perl 6 (146 | 150)
Cara termudah untuk melakukan ini adalah dengan hanya menukar subrutin yang mengimplementasikan operator untuk yang baru.
Jumlah minimum absolut byte untuk melakukannya dengan cara ini adalah:
146 byte, meskipun lebih masuk akal untuk menghitung grapheme di Perl 6.
Ini mengasumsikan bahwa " output ekspresi yang sama dalam notasi awalan " hanya bisa merujuk ke hasil ekspresi, belum tentu output dari program.
Anda harus menambahkan
say
di depan ekspresi untuk mendapatkan program untuk mencetaknya ke STDOUT. (150 byte)sumber
Unix TMG , 189 byte
Solusinya hampir langsung dari manual untuk bahasa tersebut, dengan hanya bermain golf dasar.
Diperluas:
sumber