introduction
Le système de composition LaTeX utilise des macros pour définir les accents. Par exemple, la lettre ê est produite par \hat{e}
. Dans ce défi, votre tâche consiste à implémenter une version ASCII de cette fonctionnalité.
Contribution
Votre entrée est une chaîne non vide de caractères ASCII imprimables. Il ne contiendra pas de nouvelles lignes.
Production
Votre sortie est une chaîne composée de deux lignes. La première ligne contient des accents et la deuxième ligne les caractères auxquels ils appartiennent. Il est obtenu à partir de l'entrée comme suit ( A
dénote un caractère arbitraire):
- Tout
\bar{A}
est remplacé parA
par_
dessus. - Tout
\dot{A}
est remplacé parA
par.
dessus. - Tout
\hat{A}
est remplacé parA
par^
dessus. - Pour un bonus de -10%: tout
\tilde{A}
est remplacé parA
avec~
en haut. - Tous les autres personnages ont un espace au-dessus d'eux.
Par exemple, l'entrée
Je suis pr\hat{e}t.
entraîne la sortie
^
Je suis pret.
Règles et notation
Vous pouvez supposer que les personnages \{}
n'apparaissent que dans les macros \bar{}
, \dot{}
et \hat{}
(et \tilde{}
si vous optez pour le bonus). Tous les arguments de macro ont exactement un caractère \dot{foo}
et \dot{}
ne se produiront donc pas en entrée. La sortie peut être une chaîne séparée par des sauts de ligne ou une liste / paire de deux chaînes. N'importe quelle quantité d'espace blanc arrière et précédent est autorisée, tant que les accents sont aux bons endroits. En particulier, s'il n'y a pas d'accents, la sortie peut être une seule chaîne.
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas (après les bonus) gagne et les failles standard sont interdites.
Cas de test
Sans 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
Avec 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`
la source
\bar{foo}
une entrée valide?Réponses:
Pyth,
514645434140 octets\
J'enlève les accolades et je m'écarte, tout comme la réponse CJam de Reto Koradi. Les codesbar
,dot
ethat
sont reconnus simplement par le dernier chiffre décimal du code de caractère du premier caractère, modulo 3. Je viens d'ajouter (RIP) à la première partie et de le supprimer à la fin pour enregistrer le code pour gérer la première partie spécialement .barf
""""
Essayez-le en ligne. Suite de tests.
la source
barf
... " +1Julia,
204184 octets * 0,9 = 165,6Il s'agit d'une fonction anonyme qui accepte une chaîne et renvoie un tuple de chaînes correspondant aux lignes supérieure et inférieure. La ligne supérieure aura un espace de fin. Pour appeler la fonction, donnez-lui un nom, par exemple
f=x->...
Non golfé:
la source
CJam, 53 octets
Essayez-le en ligne
Explication:
la source
Haskell, 156 * 0,9 = 140,4 octets
Exemple d'utilisation:
Comment cela fonctionne: parcourez la chaîne d'entrée caractère par caractère et créez une liste de paires de caractères, la gauche pour la chaîne de sortie supérieure, la droite pour la chaîne de sortie inférieure. Si un
\
est trouvé, prenez l'accent approprié, sinon un espace pour l'élément gauche. Enfin, transformez la liste des paires en une seule chaîne.la source
Python 3, 203 octets
Sans bonus:
J'espère vraiment qu'il existe une version plus courte.
la source
<s></s>
, puis de taper le nouveau décompte d'octets afin que nous puissions voir les étapes vers la concision.