sfondo
I programmatori LISP hanno conquistato il mondo! Le parentesi sono state dichiarate come personaggi sacri e da ora in poi possono essere utilizzate solo nei programmi LISP. È stato deciso che le parentesi nelle opere letterarie debbano essere sostituite da note a piè di pagina ed è tuo compito automatizzare questo per un testo Markdown semplificato.
Ingresso
Il tuo input è una singola stringa contenente caratteri alfabetici ASCII, spazi e caratteri speciali ,.!?()
. Non conterrà nuove righe o cifre. Le parentesi verranno abbinate correttamente.
Produzione
Devi convertire ogni coppia di parentesi nella stringa di input in una nota a piè di pagina. Questo succede come segue:
- Sostituisci la prima coppia di parentesi corrispondente e la sottostringa tra loro con un numero che parte da
1
, racchiuso tra i tag Markdown<sup>
e</sup>
. - Aggiungi alla fine della stringa
- due newline,
- il tag Markdown
<sub>
, - il numero dal passaggio 1,
- Uno spazio,
- la sottostringa tra parentesi e
- il tag di chiusura
</sub>
, in questo ordine.
- Se nella stringa sono ancora presenti parentesi, andare al passaggio 1.
L'output è la stringa risultante, possibilmente con una nuova riga finale. Non è necessario implementare questo algoritmo esatto, purché l'output sia corretto. Si noti che potrebbero esserci parentesi nidificate; in tal caso, avremo note a piè di pagina che contengono riferimenti ad altre note a piè di pagina. La sottostringa tra parentesi può anche essere vuota. Vedere i casi di test di seguito per esempi.
Regole e punteggio
Puoi scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Se la tua lingua non supporta nativamente i numeri decimali ( tosse Retina tosse ), puoi dare i numeri delle note a piè di pagina in un'altra base, incluso binario o unario; tuttavia, l'utilizzo di numeri unari comporta una penalità del + 20% .
Casi test
Ingresso:
This input contains no parentheses.
Produzione:
This input contains no parentheses.
Ingresso:
This has (some) parentheses (but not so many).
Produzione:
This has <sup>1</sup> parentheses <sup>2</sup>.
<sub>1 some</sub>
<sub>2 but not so many</sub>
Ingresso:
This has (nested (deeply (or highly?) nested)) parentheses (and several groups).
Produzione:
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>
Ingresso:
Hmm()(()(,)) a()((trt)(v( (((((wut)))))(X)(Y)(Z) )!?!?!?!))oooooooo(oooo)oooo
Produzione:
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>
Nota le righe vuote tra le note.
foo (bar)\nfoot (note)
?