배경
앨리스와 밥은 모든 PPCG 도전에서 승리하기 위해 골프 언어를 만들고 있습니다. Alice는> <>와 같은 2 차원 언어를 만들고 싶어하지만 Bob은 J와 같은 접두사 접두사 구문을 선호합니다. 파서는 작성하는 데 어려움이 있으며 도움이 필요합니다!
구문 사양
Alice와 Bob의 언어에는 소문자 ASCII 문자로 표시되는 변수a-z
와 대문자 ASCII 문자로 표시되는 함수 가 있습니다 A-Z
. 하나 또는 두 개의 인수로 함수를 호출 할 수 있습니다. 프로그램은 문자의 사각형 격자이다 a-zA-Z
공백, 그리고 왼쪽 상단 코너에 공백을 포함 할 수 없습니다. 다음은 유효한 프로그램의 예입니다.
F Gy
H
R x
프로그램이 구문 분석 할 때, 형식의 단일 문자 변수와 함수 호출을 포함하는 C 스타일 언어 (C, 자바, 파이썬 ...)의 표현으로 변환 것 <func>(<arg>)
나 <func>(<arg1>,<arg2>)
. 예를 들어, 위의 프로그램은 다음과 같은 식으로 나타납니다.
F(H(R(x)),G(x,y))
구문 분석 프로세스의 세부 사항은 다음과 같습니다.
- 공백은 필러이므로 구문 분석되지 않습니다.
- 모든 변수
a-z
는 항상 그 자체로 구문 분석됩니다. - 모든 함수
A-Z
는 함수 호출로 구문 분석됩니다. 이 인수는 아래에 있고 그리드에서 오른쪽에 가장 가까운 식입니다. 이들 중 하나만있는 경우 유일한 인수로 제공됩니다. 모든 함수에 격자에 하나 이상의 인수가 있다고 가정 할 수 있습니다.
위의 예에서 변수 x
와 변수 y
는 그 자체로 구문 분석됩니다. 이 함수 R
는 그 아래와 x
오른쪽에 아무것도 없으므로 1 인수 호출로 구문 분석됩니다 R(x)
. 마찬가지로 아래에 있기 때문에 H
로 구문 분석됩니다 . 이 함수 는 그 아래 에 있고 오른쪽 에 있습니다. 왼쪽 상단에서 구문 분석 된 표현식은 구문 분석 프로세스의 결과입니다.H(R(x))
R
G
x
y
G(x,y)
F
입력과 출력
입력은 비어 있지 않은 직사각형 문자 배열입니다. 항상 Alice와 Bob의 언어로 유효한 프로그램이지만 출력에 사용되지 않는 표현식이 포함될 수 있습니다. 결과는 위의 과정에서 나온 구문 분석 된 표현입니다.
규칙과 득점
함수의 전체 프로그램을 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점은 허용되지 않습니다.
테스트 사례
이들은 사이에 grid <newline> expression
하이픈이 있는 형식으로 제공됩니다 ---
. SE 형식은 일부 행을 비워 두지 만 공백으로 채워야합니다.
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)))
이 적합하거나 형식이 고정되어 있습니까?