사람들은 컴퓨터에서 수학적 방정식을 ASCII 예술로 직접 쓰는 평행 우주에서 운송됩니다. LaTeX 중독자로서 이것은 완전히 받아 들일 수 없으며이 과정을 다소 자동화해야합니다.
LaTeX math 명령으로 입력 된 방정식의 ASCII 버전을 출력하는 프로그램을 작성하는 것이 목표입니다.
지원하는 필수 LaTeX 명령
합 : 합에 대한 LaTeX 명령은
\sum_{lower bound}^{upper bound}
합계에 사용해야하는 ASCII 숫자는 다음과 같습니다.
upper bound ___ \ ` /__, lower bound
제품 : 제품의 LaTeX 명령은
\prod_{lower bound}^{upper bound}
제품에 사용해야하는 ASCII 수치는 다음과 같습니다.
upper bound ____ | | | | lower bound
분수 : 분수에 대한 LaTeX 명령은
\frac{numerator}{denominator}
분수에 사용해야하는 ASCII 숫자는 다음과 같습니다.
numerator ----------- denominator
이 세 명령 중 하나가 아닌 것은 그대로 표시됩니다. 예를 들어 다음과 \sum{i=3}^{e^10}\frac{3x+5}{2}
같이 표시되어야합니다.
e^10
___ 3x+5
\ ` ----
/__, 2
i=3
입력
입력은 문자열로 전달 된 LaTeX 명령입니다 (또는 언어가 문자열과 동일 함). LaTeX 명령은 중첩 될 수 있습니다 \frac{\frac{1}{2}}{3}
. 예를 들어 유효한 입력입니다. 입력은 항상 정확해야합니다 (코드에서 LaTeX의 구문을 확인할 필요가 없습니다). 입력은 위에 제시된 세 가지 LaTeX 명령과 형식화 할 필요가없는 '텍스트'로만 구성됩니다.
LaTeX 명령은 항상 위에 제시된 구문과 함께 제공됩니다. 즉, 합계와 곱은 항상 상한과 하한을 가지며 (비어있을 수는 있지만) 분수에 대한 분자와 분모가 항상 있습니다.
합계 및 곱의 경계는 최대 4 자 (= 합계 및 곱의 너비)로 가정하므로 중복 문제가 발생할 염려가 없습니다. 비슷한 이유로, 우리는 경계가 단지 '텍스트'이고 LaTeX 명령이 될 수 없다고 가정합니다. 예를 들어 \sum_{\sum_{1}^{2}}^{1}
유효한 입력이 아닙니다.
출력
프로그램의 출력은 입력으로 제공된 LaTeX 명령의 ASCII 표현입니다.
프로그램은 가로 정렬을 고려해야합니다. 예를 들어, 합계 또는 곱의 경계는 합계 또는 곱 기호 (모두 4 자)와 가로로 정렬되어야합니다. 바운딩에 홀수의 문자가있는 경우 중앙의 오른쪽 또는 왼쪽에서 한 문자인지 여부는 중요하지 않습니다. 분수의 선은 분자 또는 분모만큼 길어야합니다.
프로그램은 수직 정렬을 고려해야합니다. 예를 들어 다음과 \frac{\frac{1}{2}}{3} = \frac{1}{6}
같이 표시되어야합니다.
1
-
2 1
- = -
3 6
합계 및 곱의 경우 기호의 높이가 4 자이므로 세로 가운데는 맨 위에서 두 번째 줄로 간주됩니다.
주어진 입력에서 수평 간격이 올바른 것으로 가정합니다. 즉, 입력의 공백이 출력에 표시되어야합니다.
테스트 사례
입력
abc = 2
산출
abc = 2
입력
e = \sum_{n=0}^{+inf} \frac{1}{n!}
산출
+inf ___ 1 e = \ ` -- /__, n! n=0
입력
e^x = 1 + \frac{x}{1 - \frac{x}{2 + x - ...}}
산출
x e^x = 1 + --------------- x 1 - ----------- 2 + x - ...
입력
\prod_{i=1}^{n} \frac{\sum_{j=0}^{m} 2j}{i + 1}
산출
m ___ \ ` 2j n /__, ____ j=0 | | ------- | | i + 1 i=1
입력
\frac{sum}{prod} = \sum_{frac}^{prod} sum
산출
prod sum ___ ---- = \ ` sum prod /__, frac
채점
이것은 code-golf 이므로 가장 짧은 코드가 승리합니다.