배경
LISP 프로그래머가 전 세계를 점령했습니다! 괄호는 신성한 문자로 선언되었으며 지금부터 LISP 프로그램에서만 사용할 수 있습니다. 문학 작품의 괄호는 각주로 대체하기로 결정했으며 단순화 된 마크 다운 텍스트를 위해이를 자동화하는 것이 귀하의 임무입니다.
입력
입력은 알파벳 ASCII 문자, 공백 및 특수 문자가 포함 된 단일 문자열 ,.!?()
입니다. 개행이나 숫자를 포함하지 않습니다. 괄호가 올바르게 일치합니다.
산출
입력 문자열에서 일치하는 각 괄호 쌍을 각주로 변환해야합니다. 이것은 다음과 같이 발생합니다 :
- 첫 번째로 일치하는 괄호 쌍과 그 사이의 하위 문자열을에서 시작 번호로 시작
1
하고 Markdown 태그<sup>
와 사이에 래핑합니다</sup>
. - 문자열의 끝에 추가
- 두 줄 바꿈
- Markdown을 태그
<sub>
, - 1 단계의 숫자
- 우주,
- 괄호 사이의 하위 문자열
</sub>
이 순서대로 닫는 태그
- 문자열에 여전히 괄호가 남아 있으면 1 단계로 이동하십시오.
결과는 결과 문자열이며 후행 줄 바꿈이 있습니다. 출력이 정확하다면이 정확한 알고리즘을 구현할 필요는 없습니다. 중첩 된 괄호가있을 수 있습니다. 이 경우 다른 각주에 대한 참조가 포함 된 각주가 있습니다. 괄호 안의 부분 문자열도 비어있을 수 있습니다. 예제는 아래 테스트 사례를 참조하십시오.
규칙과 채점
당신은 전체 프로그램이나 함수를 작성할 수 있습니다. 바이트 수가 가장 적고 표준 허점이 허용되지 않습니다.
언어가 기본적으로 십진수를 지원하지 않는 경우 ( 기침 Retina cough ) 이진 또는 단항을 포함하여 다른 기본에 각주 번호를 줄 수 있습니다. 단항 숫자를 사용 하면 + 20 % 의 위약금이 부과 됩니다.
테스트 사례
입력:
This input contains no parentheses.
산출:
This input contains no parentheses.
입력:
This has (some) parentheses (but not so many).
산출:
This has <sup>1</sup> parentheses <sup>2</sup>.
<sub>1 some</sub>
<sub>2 but not so many</sub>
입력:
This has (nested (deeply (or highly?) nested)) parentheses (and several groups).
산출:
This has <sup>1</sup> parentheses <sup>2</sup>.
<sub>1 nested <sup>3</sup></sub>
<sub>2 and several groups</sub>
<sub>3 deeply <sup>4</sup> nested</sub>
<sub>4 or highly?</sub>
입력:
Hmm()(()(,)) a()((trt)(v( (((((wut)))))(X)(Y)(Z) )!?!?!?!))oooooooo(oooo)oooo
산출:
Hmm<sup>1</sup><sup>2</sup> a<sup>3</sup><sup>4</sup>oooooooo<sup>5</sup>oooo
<sub>1 </sub>
<sub>2 <sup>6</sup><sup>7</sup></sub>
<sub>3 </sub>
<sub>4 <sup>8</sup><sup>9</sup></sub>
<sub>5 oooo</sub>
<sub>6 </sub>
<sub>7 ,</sub>
<sub>8 trt</sub>
<sub>9 v<sup>10</sup>!?!?!?!</sub>
<sub>10 <sup>11</sup><sup>12</sup><sup>13</sup><sup>14</sup> </sub>
<sub>11 <sup>15</sup></sub>
<sub>12 X</sub>
<sub>13 Y</sub>
<sub>14 Z</sub>
<sub>15 <sup>16</sup></sub>
<sub>16 <sup>17</sup></sub>
<sub>17 <sup>18</sup></sub>
<sub>18 wut</sub>
각주 사이에 빈 줄이 있습니다.
foo (bar)\nfoot (note)
무엇입니까?