fundo
Programadores LISP conquistaram o mundo! Os parênteses foram declarados como caracteres sagrados e, a partir de agora, só podem ser usados em programas LISP. Foi decidido que os parênteses nas obras literárias serão substituídos por notas de rodapé, e é seu trabalho automatizar isso para o texto Markdown simplificado.
Entrada
Sua entrada é uma única sequência que contém caracteres ASCII alfabéticos, espaços e caracteres especiais ,.!?()
. Não conterá novas linhas ou dígitos. Os parênteses serão correspondidos corretamente.
Saída
Você deve converter cada par de parênteses correspondente na sequência de entrada em uma nota de rodapé. Isso acontece da seguinte maneira:
- Substitua o primeiro par correspondente de parênteses e a substring entre eles por um número em execução que começa em
1
, entre as tags Markdown<sup>
e</sup>
. - Anexar ao final da string
- duas novas linhas,
- a tag Markdown
<sub>
, - o número da etapa 1,
- um espaço,
- a substring entre parênteses e
- a tag de fechamento
</sub>
, nesta ordem.
- Se ainda houver parênteses na sequência, vá para a etapa 1.
Sua saída é a sequência resultante, possivelmente com uma nova linha à direita. Você não precisa implementar esse algoritmo exato, desde que sua saída esteja correta. Observe que pode haver parênteses aninhados; nesse caso, teremos notas de rodapé que contêm referências a outras notas de rodapé. A substring entre parênteses também pode estar vazia. Veja os casos de teste abaixo para exemplos.
Regras e Pontuação
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Se o seu idioma não suporta nativamente números decimais ( tosse Retina tosse ), você pode dar os números nota de rodapé na outra base, incluindo binários ou unário; no entanto, o uso de números unários impõe uma penalidade de + 20% .
Casos de teste
Entrada:
This input contains no parentheses.
Saída:
This input contains no parentheses.
Entrada:
This has (some) parentheses (but not so many).
Saída:
This has <sup>1</sup> parentheses <sup>2</sup>.
<sub>1 some</sub>
<sub>2 but not so many</sub>
Entrada:
This has (nested (deeply (or highly?) nested)) parentheses (and several groups).
Saída:
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>
Entrada:
Hmm()(()(,)) a()((trt)(v( (((((wut)))))(X)(Y)(Z) )!?!?!?!))oooooooo(oooo)oooo
Saída:
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>
Observe as linhas vazias entre as notas de rodapé.
foo (bar)\nfoot (note)
?