Introducción
El sistema de composición tipográfica LaTeX utiliza macros para definir acentos. Por ejemplo, la letra ê es producida por \hat{e}
. En este desafío, su tarea es implementar una versión ASCII de esta funcionalidad.
Entrada
Su entrada es una cadena no vacía de caracteres ASCII imprimibles. No contendrá nuevas líneas.
Salida
Su salida es una cadena que consta de dos líneas. La primera línea contiene acentos, y la segunda línea los caracteres a los que pertenecen. Se obtiene de la entrada de la siguiente manera ( A
denota un carácter arbitrario):
- Cada
\bar{A}
se sustituye porA
la_
encima de él. - Cada
\dot{A}
se sustituye porA
la.
encima de él. - Cada
\hat{A}
se sustituye porA
la^
encima de él. - Para un bono -10%: todos
\tilde{A}
se sustituye porA
la~
encima de él. - Todos los demás personajes tienen un espacio por encima de ellos.
Por ejemplo, la entrada
Je suis pr\hat{e}t.
resultados en la salida
^
Je suis pret.
Reglas y puntaje
Se puede suponer que los personajes \{}
sólo se producen en las macros \bar{}
, \dot{}
y \hat{}
(y \tilde{}
si vas para el bono). Todos los argumentos de la macro son exactamente un carácter de longitud, por lo que \dot{foo}
y \dot{}
no ocurrirán en la entrada. La salida puede ser una cadena separada por una nueva línea, o una lista / par de dos cadenas. Se permite cualquier cantidad de espacios en blanco finales y anteriores, siempre que los acentos estén en los lugares correctos. En particular, si no hay acentos, la salida puede ser una sola cadena.
Puede escribir un programa completo o una función. El conteo de bytes más bajo (después de los bonos) gana, y las lagunas estándar no se permiten.
Casos de prueba
Sin bonificación:
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
Con bonificación:
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`
fuente
\bar{foo}
una entrada válida?Respuestas:
Pyth,
514645434140 bytesQuito las llaves y dividida en
\
, al igual que la respuesta de Cjam Reto Koradi hace. Los códigosbar
,dot
yhat
se reconocen simplemente por el último dígito decimal del código de caracteres del primer carácter, módulo 3. Solo agrego (RIP) a la primera parte y lo elimino al final para guardar el código para manejar la primera parte especialmente .barf
""""
Pruébalo en línea. Banco de pruebas.
fuente
barf
... " +1Julia,
204184 bytes * 0,9 = 165,6Esta es una función anónima que acepta una cadena y devuelve una tupla de cadenas correspondientes a las líneas superior e inferior. La línea superior tendrá espacios en blanco al final. Para llamar a la función, asígnele un nombre, p. Ej.
f=x->...
Sin golf:
fuente
CJam, 53 bytes
Pruébalo en línea
Explicación:
fuente
Haskell, 156 * 0.9 = 140.4 bytes
Ejemplo de uso:
Cómo funciona: revise la cadena de entrada carácter por carácter y construya una lista de pares de caracteres, la izquierda para la cadena de salida superior, la derecha para la cadena de salida inferior. Si
\
se encuentra un, tome el acento apropiado, de lo contrario, un espacio para el elemento izquierdo. Finalmente, transforma la lista de pares en una sola cadena.fuente
Python 3, 203 bytes
Sin bonificación:
Realmente espero que haya una versión más corta.
fuente
<s></s>
luego escribir el conteo de bytes nuevo para que podamos ver los pasos hacia la concisión.