Wprowadzenie
System składu LaTeX używa makr do definiowania akcentów. Na przykład litera ê jest produkowana przez \hat{e}
. W tym wyzwaniu Twoim zadaniem jest zaimplementowanie wersji ASCII tej funkcji.
Wejście
Wprowadzony tekst jest niepustym ciągiem drukowalnych znaków ASCII. Nie będzie zawierać nowych linii.
Wynik
Twój wynik to ciąg składający się z dwóch linii. Pierwszy wiersz zawiera akcenty, a drugi wiersz znaki, do których należą. Jest uzyskiwany z danych wejściowych w następujący sposób ( A
oznacza dowolny znak):
- Każdy
\bar{A}
otrzymujeA
się_
na wierzchu. - Każdy
\dot{A}
otrzymujeA
się.
na wierzchu. - Każdy
\hat{A}
otrzymujeA
się^
na wierzchu. - Do premii -10%: każdy
\tilde{A}
otrzymujeA
się~
na wierzchu. - Wszystkie pozostałe postacie mają spację nad nimi.
Na przykład dane wejściowe
Je suis pr\hat{e}t.
daje wynik
^
Je suis pret.
Zasady i punktacja
Można założyć, że postacie \{}
występują tylko w makr \bar{}
, \dot{}
oraz \hat{}
(a \tilde{}
jeśli pójdziesz do premii). Wszystkie argumenty są dokładne makro długo jeden znak, więc \dot{foo}
i \dot{}
nie pojawią się w wejściu. Wynik może być ciągiem oddzielonym znakiem nowej linii lub listą / parą dwóch ciągów znaków. Dopuszczalna jest dowolna ilość końcowych i poprzedzających białych znaków, o ile akcenty znajdują się w odpowiednich miejscach. W szczególności, jeśli nie ma akcentów, wyjściem może być pojedynczy ciąg.
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów (po bonusach), a standardowe luki są niedozwolone.
Przypadki testowe
Bez premii:
Input:
No accents.
Output:
No accents.
Input:
Ch\hat{a}teau
Output:
^
Chateau
Input:
Som\bar{e} \dot{a}cc\hat{e}nts.
Output:
_ . ^
Some accents.
Input:
dot hat\dot{h}a\hat{t}\hat{ }x\bar{x}dot
Output:
. ^^ _
dot hathat xxdot
Input:
\hat{g}Hmi\hat{|}Su5Y(\dot{G}"\bar{$}id4\hat{j}gB\dot{n}#6AX'c\dot{[}\hat{)} 6\hat{[}T~_sR\hat{&}CEB
Output:
^ ^ . _ ^ . .^ ^ ^
gHmi|Su5Y(G"$id4jgBn#6AX'c[) 6[T~_sR&CEB
Z premią:
Input:
Ma\tilde{n}ana
Output:
~
Manana
Input:
\dot{L}Vz\dot{[}|M.\bar{#}0\hat{u}U^y!"\tilde{I} K.\bar{"}\hat{m}dT\tilde{$}F\bar{;}59$,/5\bar{'}K\tilde{v}R \tilde{E}X`
Output:
. . _ ^ ~ _^ ~ _ _ ~ ~
LVz[|M.#0uU^y!"I K."mdT$F;59$,/5'KvR EX`
źródło
\bar{foo}
to poprawny wkład?Odpowiedzi:
Pyth,
514645434140 bajtów\
Usuwam nawiasy klamrowe i dzielę na , podobnie jak odpowiedź CJam Reto Koradi. Kodybar
,dot
ihat
są rozpoznawane po prostu przez ostatnią cyfrę dziesiętną kodu znaków pierwszego znaku, modulo 3. Po prostu dodać (RIP) do pierwszej części i usunąć go w końcu, aby zapisać kod do obsługi pierwszą część specjalnie .barf
""""
Wypróbuj online. Zestaw testowy.
źródło
barf
... ” +1Julia,
204184 bajtów * 0,9 = 165,6Jest to anonimowa funkcja, która akceptuje ciąg znaków i zwraca krotkę ciągów odpowiadającą górnej i dolnej linii. Górna linia będzie miała końcowe białe znaki. Aby wywołać funkcję, nadaj jej nazwę, np
f=x->...
Nie golfowany:
źródło
CJam, 53 bajty
Wypróbuj online
Wyjaśnienie:
źródło
Haskell, 156 * 0,9 = 140,4 bajtów
Przykład użycia:
Jak to działa: przejdź przez ciąg znaków wejściowych znak po znaku i zbuduj listę par znaków, lewy dla górnego ciągu wyjściowego, prawy dla dolnego ciągu wyjściowego. Jeśli
\
znaleziono a, weź odpowiedni akcent, w przeciwnym razie miejsce na lewy element. Na koniec przekształć listę par w pojedynczy ciąg.źródło
Python 3, 203 bajty
Bez premii:
Naprawdę mam nadzieję, że jest krótsza wersja.
źródło
<s></s>
, a następnie wpisanie nowej liczby bajtów, abyśmy mogli zobaczyć kroki w kierunku zakończenia.