Arka fon
LISP programcıları dünyayı ele geçirdi! Parantezler kutsal karakterler olarak ilan edilmiştir ve bundan sonra sadece LISP programlarında kullanılabilirler. Edebi eserlerde parantezlerin dipnotlarla değiştirilmesine karar verilmiştir ve basitleştirilmiş Markdown metni için bunu otomatikleştirmek sizin işinizdir.
Giriş
Girişiniz alfabetik ASCII karakterleri, boşlukları ve özel karakterleri içeren tek bir dizedir ,.!?()
. Yeni satır veya rakam içermez. Parantezler doğru şekilde eşleştirilecektir.
Çıktı
Giriş dizesindeki eşleşen her parantez çiftini dipnot haline getirmelisiniz. Bu şöyle olur:
- Eşleşen ilk parantez çiftini ve aralarındaki alt
1
dizgeyi, Markdown etiketleri arasına sarılmış, başından başlayarak çalışan bir numara<sup>
ile değiştirin</sup>
. - Dizenin sonuna ekle
- iki yeni hat
- Markdown etiketi
<sub>
, - 1. adımdaki sayı,
- bir boşluk,
- parantez arasındaki alt dize ve
</sub>
Bu sırayla kapanış etiketi .
- İpte hala parantez varsa, 1. adıma gidin.
Çıktınız, muhtemelen sonunda izleyen bir yeni satır olan sonuç dizesidir. Çıktınız doğru olduğu sürece bu tam algoritmayı uygulamanız gerekmez. Yuvalanmış parantez olabileceğini unutmayın; Bu durumda, diğer dipnotlara referanslar içeren dipnotlarımız olacaktır. Parantezler arasındaki alt dize de boş olabilir. Örnekler için aşağıdaki test durumlarına bakın.
Kurallar ve Puanlama
Tam bir program ya da bir fonksiyon yazabilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklar izin verilmez.
Diliniz doğal olarak ondalık sayıları desteklemiyorsa ( öksürük Retina öksürüğü ), dipnot numaralarını ikili veya tekli dahil olmak üzere başka bir temelde verebilirsiniz; bununla birlikte, tek sayılı sayılar kullanılması % + 20 ceza verir .
Test Kılıfları
Giriş:
This input contains no parentheses.
Çıktı:
This input contains no parentheses.
Giriş:
This has (some) parentheses (but not so many).
Çıktı:
This has <sup>1</sup> parentheses <sup>2</sup>.
<sub>1 some</sub>
<sub>2 but not so many</sub>
Giriş:
This has (nested (deeply (or highly?) nested)) parentheses (and several groups).
Çıktı:
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>
Giriş:
Hmm()(()(,)) a()((trt)(v( (((((wut)))))(X)(Y)(Z) )!?!?!?!))oooooooo(oooo)oooo
Çıktı:
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>
Dipnotlar arasındaki boş satırlara dikkat edin.
foo (bar)\nfoot (note)
?