Einführung
Das LaTeX-Schriftsatzsystem verwendet Makros zum Definieren von Akzenten. Zum Beispiel wird der Buchstabe ê von erzeugt \hat{e}
. Bei dieser Herausforderung besteht Ihre Aufgabe darin, eine ASCII-Version dieser Funktionalität zu implementieren.
Eingang
Ihre Eingabe ist eine nicht leere Zeichenfolge mit druckbaren ASCII-Zeichen. Es enthält keine Zeilenumbrüche.
Ausgabe
Ihre Ausgabe ist eine Zeichenfolge, die aus zwei Zeilen besteht. Die erste Zeile enthält Akzente und die zweite Zeile die Zeichen, zu denen sie gehören. Es wird aus der Eingabe wie folgt erhalten ( A
bezeichnet ein beliebiges Zeichen):
- Jeder
\bar{A}
wird ersetzt durchA
mit_
oben drauf. - Jeder
\dot{A}
wird ersetzt durchA
mit.
oben drauf. - Jeder
\hat{A}
wird ersetzt durchA
mit^
oben drauf. - Für einen 10% Bonus: jeder
\tilde{A}
wird ersetzt durch dieA
mit~
oben drauf. - Alle anderen Zeichen haben ein Leerzeichen darüber.
Zum Beispiel die Eingabe
Je suis pr\hat{e}t.
führt zur Ausgabe
^
Je suis pret.
Regeln und Wertung
Sie können davon ausgehen , dass die Zeichen \{}
nur in dem Makros auftreten \bar{}
, \dot{}
und \hat{}
(und \tilde{}
wenn Sie sich für den Bonus zu gehen). Alle Makroargumente sind genau ein Zeichen lang \dot{foo}
und \dot{}
kommen daher in der Eingabe nicht vor. Die Ausgabe kann eine durch Zeilenumbrüche getrennte Zeichenfolge oder eine Liste / ein Paar von zwei Zeichenfolgen sein. Jede Anzahl von nachgestellten und vorangestellten Leerzeichen ist zulässig, solange sich die Akzente an den richtigen Stellen befinden. Insbesondere wenn keine Akzente vorhanden sind, kann die Ausgabe eine einzelne Zeichenfolge sein.
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl (nach Boni) gewinnt und Standardschlupflöcher sind nicht zulässig.
Testfälle
Ohne Bonus:
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
Mit Bonus:
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`
quelle
\bar{foo}
eine gültige Eingabe?Antworten:
Pyth,
514645434140 BytesIch entferne die geschweiften Klammern und spalte an
\
, genau wie es Reto Koradis CJam-Antwort tut. Die Codes und werden einfach an der letzten Dezimalstelle des Zeichencodes des ersten Zeichens, Modulo 3bar
, erkannt. Ich füge einfach (RIP) zum ersten Teil hinzu und entferne ihn am Ende, um den Code für die spezielle Behandlung des ersten Teils zu speichern .dot
hat
barf
""""
Probieren Sie es online aus. Testsuite.
quelle
barf
... " +1Julia,
204184 Bytes * 0,9 = 165,6Dies ist eine anonyme Funktion, die eine Zeichenfolge akzeptiert und ein Tupel von Zeichenfolgen zurückgibt, die der oberen und unteren Zeile entsprechen. Die oberste Zeile enthält nachgestellte Leerzeichen. Um die Funktion aufzurufen, geben Sie ihr einen Namen, z
f=x->...
Ungolfed:
quelle
CJam, 53 Bytes
Probieren Sie es online aus
Erläuterung:
quelle
Haskell, 156 * 0,9 = 140,4 Bytes
Anwendungsbeispiel:
So funktioniert es: Gehen Sie die Eingabezeichenfolge Zeichen für Zeichen durch und erstellen Sie eine Liste von Zeichenpaaren, links für die obere Ausgabezeichenfolge, rechts für die untere Ausgabezeichenfolge. Wenn a
\
gefunden wird, nehmen Sie den entsprechenden Akzent, andernfalls ein Leerzeichen für das linke Element. Transformieren Sie schließlich die Liste der Paare in eine einzelne Zeichenfolge.quelle
Python 3, 203 Bytes
Ohne Bonus:
Ich hoffe wirklich, dass es eine kürzere Version gibt.
quelle
<s></s>
und dann die Anzahl der neuen Bytes einzugeben, damit wir die Schritte zur Präzision sehen können.