Contexte
Les programmeurs LISP ont conquis le monde! Les parenthèses ont été déclarées comme des caractères sacrés, et désormais, elles ne peuvent être utilisées que dans les programmes LISP. Il a été décidé que les parenthèses dans les œuvres littéraires seront remplacées par des notes de bas de page, et c'est votre travail d'automatiser cela pour un texte Markdown simplifié.
Contribution
Votre entrée est une chaîne unique contenant des caractères alphabétiques ASCII, des espaces et des caractères spéciaux ,.!?()
. Il ne contiendra pas de nouvelles lignes ni de chiffres. Les parenthèses seront correctement appariées.
Sortie
Vous devez convertir chaque paire de parenthèses correspondante dans la chaîne d'entrée en note de bas de page. Cela se produit comme suit:
- Remplacez la première paire de parenthèses correspondante et la sous-chaîne entre elles par un numéro en cours d'exécution à partir de
1
, encapsulé entre les balises Markdown<sup>
et</sup>
. - Ajouter à la fin de la chaîne
- deux nouvelles lignes,
- la balise Markdown
<sub>
, - le numéro de l'étape 1,
- un espace,
- la sous-chaîne entre les parenthèses, et
- la balise de fermeture
</sub>
, dans cet ordre.
- S'il reste des parenthèses dans la chaîne, passez à l'étape 1.
Votre sortie est la chaîne résultante, éventuellement avec une nouvelle ligne de fin. Vous n'avez pas à implémenter cet algorithme exact, tant que votre sortie est correcte. Notez qu'il peut y avoir des parenthèses imbriquées; dans ce cas, nous aurons des notes de bas de page contenant des références à d'autres notes de bas de page. La sous-chaîne entre parenthèses peut également être vide. Voir les cas de test ci-dessous pour des exemples.
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Si votre langue ne prend pas en charge en mode natif des nombres décimaux ( toux Retina contre la toux ), vous pouvez donner les numéros de note de bas dans une autre base, y compris binaire ou unaire; cependant, l'utilisation de nombres unaires impose une pénalité de + 20% .
Cas de test
Contribution:
This input contains no parentheses.
Sortie:
This input contains no parentheses.
Contribution:
This has (some) parentheses (but not so many).
Sortie:
This has <sup>1</sup> parentheses <sup>2</sup>.
<sub>1 some</sub>
<sub>2 but not so many</sub>
Contribution:
This has (nested (deeply (or highly?) nested)) parentheses (and several groups).
Sortie:
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>
Contribution:
Hmm()(()(,)) a()((trt)(v( (((((wut)))))(X)(Y)(Z) )!?!?!?!))oooooooo(oooo)oooo
Sortie:
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>
Notez les lignes vides entre les notes de bas de page.
foo (bar)\nfoot (note)
?