tło
Programiści LISP przejęli świat! Nawiasy zostały zadeklarowane jako święte postacie i odtąd można ich używać tylko w programach LISP. Zdecydowano, że nawiasy w utworach literackich zostaną zastąpione przypisami, a Twoim zadaniem jest zautomatyzowanie tego w celu uproszczenia tekstu Markdown.
Wkład
Dane wejściowe to pojedynczy ciąg znaków zawierający alfabetyczne znaki ASCII, spacje i znaki specjalne ,.!?()
. Nie będzie zawierał znaków nowej linii ani cyfr. Nawiasy zostaną poprawnie dopasowane.
Wydajność
Przekształcisz każdą dopasowaną parę nawiasów w ciągu wejściowym w przypis. Dzieje się to w następujący sposób:
- Zastąp pierwszą pasującą parę nawiasów i podłańcuch między nimi bieżącą liczbą, która zaczyna się od
1
, zawiniętą między znaczniki Markdown<sup>
i</sup>
. - Dołącz na końcu ciągu
- dwie nowe linie,
- tag Markdown
<sub>
, - numer z kroku 1,
- przestrzeń,
- podciąg między nawiasami i
- tag zamykający
</sub>
, w tej kolejności.
- Jeśli w łańcuchu pozostały nawiasy, przejdź do kroku 1.
Twój wynik jest ciągiem wynikowym, być może z końcowym znakiem nowej linii. Nie musisz implementować tego dokładnego algorytmu, o ile wyniki są prawidłowe. Zauważ, że mogą być zagnieżdżone nawiasy; w takim przypadku będziemy mieli przypisy zawierające odniesienia do innych przypisów. Podciąg między nawiasami może być również pusty. Zobacz przykłady przypadków poniżej.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Jeśli język nie natywnie wsparcie liczby dziesiętne ( kaszel Retina kaszel ), można podać numery przypisów w innej bazie, w tym binarny lub jednoskładnikowa; jednak użycie liczb jednostkowych nakłada karę + 20% .
Przypadki testowe
Wkład:
This input contains no parentheses.
Wydajność:
This input contains no parentheses.
Wkład:
This has (some) parentheses (but not so many).
Wydajność:
This has <sup>1</sup> parentheses <sup>2</sup>.
<sub>1 some</sub>
<sub>2 but not so many</sub>
Wkład:
This has (nested (deeply (or highly?) nested)) parentheses (and several groups).
Wydajność:
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>
Wkład:
Hmm()(()(,)) a()((trt)(v( (((((wut)))))(X)(Y)(Z) )!?!?!?!))oooooooo(oooo)oooo
Wydajność:
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>
Zwróć uwagę na puste linie między przypisami.
foo (bar)\nfoot (note)
?