背景
LISP程序员已经占领了世界!括号已被声明为神圣字符,从现在开始,它们只能在LISP程序中使用。已经决定用脚注代替文学作品中的括号,并且为简化Markdown文本而使它自动化是您的工作。
输入值
您的输入是一个包含字母ASCII字符,空格和特殊字符的字符串,.!?()
。它将不包含换行符或数字。括号将正确匹配。
输出量
您应将输入字符串中每对匹配的括号转换为脚注。发生这种情况如下:
- 将第一个匹配的括号对和括号之间的子字符串替换为一个以数字开头的运行编号,该编号
1
环绕在Markdown标记<sup>
和之间</sup>
。 - 附加到字符串的末尾
- 两条换行符
- Markdown标签
<sub>
, - 步骤1中的数字
- 空间,
- 括号之间的子字符串,以及
- 结束标记
</sub>
,按此顺序。
- 如果字符串中仍然有括号,请转到步骤1。
您的输出是结果字符串,可能带有尾随换行符。只要您的输出是正确的,就不必实现此精确算法。请注意,可能会有嵌套的括号;在这种情况下,我们的脚注将包含对其他脚注的引用。括号之间的子字符串也可以为空。有关示例,请参见下面的测试案例。
规则和计分
您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。
如果你的语言本身不支持十进制数(咳嗽视网膜咳嗽),你可能会在另一个基地,包括二进制或一元的注脚号码; 但是,使用一元数会产生+ 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)
什么?