Задний план
Программисты LISP покорили мир! Скобки были объявлены как священные символы, и теперь они могут использоваться только в программах LISP. Было решено, что скобки в литературных произведениях должны быть заменены сносками, и ваша задача автоматизировать это для упрощенного текста уценки.
вход
Ваш ввод представляет собой одну строку, содержащую буквенные символы ASCII, пробелы и специальные символы ,.!?()
. Он не будет содержать новых строк или цифр. Скобки будут правильно сопоставлены.
Выход
Вы должны преобразовать каждую соответствующую пару скобок во входной строке в сноску. Это происходит следующим образом:
- Замените первую подходящую пару скобок и подстроку между ними на порядковый номер, который начинается с
1
тегов Markdown<sup>
и</sup>
. - Добавить в конец строки
- две новые строки,
- тег уценки
<sub>
, - число с шага 1,
- пространство,
- подстрока между скобками, и
- закрывающий тег
</sub>
, в этом порядке.
- Если в строке остались скобки, перейдите к шагу 1.
Ваш вывод - полученная строка, возможно, с завершающим переводом строки. Вам не нужно реализовывать этот точный алгоритм, если ваш вывод верен. Обратите внимание, что могут быть вложенные скобки; в этом случае у нас будут сноски, которые содержат ссылки на другие сноски. Подстрока между скобками также может быть пустой. Смотрите примеры ниже.
Правила и оценки
Вы можете написать либо полную программу, либо функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Если ваш язык изначально не поддерживает десятичные числа ( кашель Retina от кашля ), вы можете дать номера сноски в другой базе, в том числе двоичном или унарный; однако использование одинарных чисел влечет наложение штрафа в размере + 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)
?