Fondo
¡Los programadores de LISP se han apoderado del mundo! Los paréntesis se han declarado como caracteres sagrados y, a partir de ahora, solo se pueden usar en programas LISP. Se ha decidido que los paréntesis en las obras literarias se reemplazarán por notas al pie de página, y es su trabajo automatizar esto para un texto simplificado de Markdown.
Entrada
Su entrada es una sola cadena que contiene caracteres alfabéticos ASCII, espacios y caracteres especiales ,.!?()
. No contendrá nuevas líneas o dígitos. Los paréntesis coincidirán correctamente.
Salida
Deberá convertir cada par de paréntesis coincidentes en la cadena de entrada en una nota al pie. Esto sucede de la siguiente manera:
- Reemplace el primer par de paréntesis coincidentes y la subcadena entre ellos por un número continuo que comience
1
, envuelto entre las etiquetas Markdown<sup>
y</sup>
. - Añadir al final de la cadena
- dos líneas nuevas
- la etiqueta Markdown
<sub>
, - el número del paso 1
- un espacio,
- la subcadena entre paréntesis y
- la etiqueta de cierre
</sub>
, en este orden.
- Si aún quedan paréntesis en la cadena, vaya al paso 1.
Su salida es la cadena resultante, posiblemente con una nueva línea final. No tiene que implementar este algoritmo exacto, siempre que su salida sea correcta. Tenga en cuenta que puede haber paréntesis anidados; en ese caso, tendremos notas al pie que contienen referencias a otras notas al pie. La subcadena entre paréntesis también puede estar vacía. Vea los casos de prueba a continuación para ver ejemplos.
Reglas y puntuación
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Si su idioma no admite de forma nativa los números decimales ( tos Retina tos ), puede dar los números de las notas al pie de página en otra base, incluidos binarios o unarios; sin embargo, el uso de números unarios impone una penalización de + 20% .
Casos de prueba
Entrada:
This input contains no parentheses.
Salida:
This input contains no parentheses.
Entrada:
This has (some) parentheses (but not so many).
Salida:
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).
Salida:
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
Salida:
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>
Tenga en cuenta las líneas vacías entre las notas al pie.
foo (bar)\nfoot (note)
?