Latar Belakang
Alice dan Bob menciptakan bahasa golf untuk memenangkan setiap tantangan PPCG. Alice ingin membuat bahasa dua dimensi, seperti> <>, tetapi Bob lebih memilih sintaks awalan-infiks seperti pada J. Sebagai kompromi, mereka memutuskan untuk membuat bahasa awalan-infiks dua dimensi. Pengurai adalah rasa sakit untuk menulis, dan mereka membutuhkan bantuan Anda!
Spesifikasi sintaks
Dalam bahasa Alice dan Bob, ada variabel , yang diwakili oleh huruf ASCII huruf kecil a-z
, dan fungsi , yang diwakili oleh huruf ASCII huruf besar A-Z
. Suatu fungsi dapat dipanggil dengan satu atau dua argumen. Suatu program adalah kotak persegi panjang dari huruf a-zA-Z
dan spasi, dan sudut kiri atas tidak boleh mengandung spasi. Ini adalah contoh dari program yang valid:
F Gy
H
R x
Ketika program diurai, itu diubah menjadi ekspresi bahasa gaya-C (C, Java, Python ...) yang berisi variabel huruf tunggal dan panggilan fungsi dalam format <func>(<arg>)
atau <func>(<arg1>,<arg2>)
. Misalnya, program di atas menghasilkan ekspresi ini:
F(H(R(x)),G(x,y))
Rincian proses penguraian adalah sebagai berikut:
- Spasi hanyalah pengisi, sehingga tidak diurai.
- Setiap variabel
a-z
selalu diurai seperti itu sendiri. - Setiap fungsi
A-Z
diuraikan sebagai panggilan fungsi. Argumennya adalah ekspresi terdekat di bawahnya dan ke kanan di grid, dalam urutan ini. Jika hanya satu yang hadir, itu diberikan sebagai satu-satunya argumen. Anda dapat mengasumsikan bahwa semua fungsi memiliki setidaknya satu argumen di kisi.
Dalam contoh di atas, variabel x
dan y
diuraikan sebagai diri mereka sendiri. Fungsi R
tidak memiliki apa pun di bawahnya dan di x
sebelah kanannya, sehingga diuraikan sebagai doa satu argumen R(x)
. Demikian pula, H
diuraikan sebagai H(R(x))
, karena memiliki R
di bawahnya. Fungsi G
memiliki x
di bawahnya dan di y
sebelah kanannya, sehingga diuraikan sebagai G(x,y)
, dan demikian pula untuk F
. Ekspresi yang diuraikan di sudut kiri atas adalah hasil dari proses penguraian.
Masukan dan keluaran
Input Anda adalah array karakter persegi panjang yang tidak kosong. Ini akan selalu menjadi program yang valid dalam bahasa Alice dan Bob, tetapi mungkin berisi ekspresi yang tidak digunakan dalam output. Output Anda akan menjadi ekspresi parsing yang dihasilkan dari proses di atas.
Aturan dan penilaian
Anda dapat menulis program lengkap suatu fungsi. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji kasus
Ini diberikan dalam format grid <newline> expression
, dengan tanda hubung ---
antara kasus. Format SE membiarkan beberapa baris kosong, tetapi harus diisi dengan spasi.
x
x
---
x y
z
x
---
Fx
F(x)
---
Fx
y
F(y,x)
---
ABu
A(B(u))
---
G
H
k
G(H(k))
---
ABCA
x xs
DFk
A(x,B(D(F(k)),C(x,A(s))))
---
A B
C D x
A(C(D(x)),B(D(x)))
---
RT Hq
I xR k
R(I(x),T(H(R(k),q)))
---
A A A a
S A b
B C Dx
d X u f
A(B(d,C(D(f,x))),A(X(u),A(u,a)))
(A (B (D x)) (C (D x)))
cocok atau formatnya sudah diperbaiki?