Introdução
O sistema tipográfico LaTeX usa macros para definir acentos. Por exemplo, a letra ê é produzida por \hat{e}
. Nesse desafio, sua tarefa é implementar uma versão ASCII dessa funcionalidade.
Entrada
Sua entrada é uma sequência não vazia de caracteres ASCII imprimíveis. Não conterá novas linhas.
Resultado
Sua saída é uma sequência que consiste em duas linhas. A primeira linha contém acentos e a segunda linha os caracteres aos quais eles pertencem. É obtido da entrada da seguinte forma ( A
denota um caractere arbitrário):
- Cada
\bar{A}
é substituído porA
com_
em cima dela. - Cada
\dot{A}
é substituído porA
com.
em cima dela. - Cada
\hat{A}
é substituído porA
com^
em cima dela. - Para um bônus -10%: todos
\tilde{A}
é substituído porA
com~
em cima dela. - Todos os outros caracteres têm um espaço acima deles.
Por exemplo, a entrada
Je suis pr\hat{e}t.
resulta na saída
^
Je suis pret.
Regras e pontuação
Você pode assumir que os personagens \{}
só ocorrem nas macros \bar{}
, \dot{}
e \hat{}
(e \tilde{}
se você ir para o bônus). Todos os argumentos de macro têm exatamente um caractere, portanto, \dot{foo}
e \dot{}
não ocorrerão na entrada. A saída pode ser uma cadeia separada por nova linha ou uma lista / par de duas cadeias. Qualquer quantidade de espaço em branco à direita e anterior é permitida, desde que os acentos estejam nos lugares corretos. Em particular, se não houver acentos, a saída pode ser uma única sequência.
Você pode escrever um programa completo ou uma função. A menor contagem de bytes (após bônus) vence e as brechas padrão são proibidas.
Casos de teste
Sem bônus:
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
Com bônus:
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`
fonte
\bar{foo}
uma entrada válida?Respostas:
Pitão,
514645434140 bytes\
Retiro o aparelho e paro, exatamente como a resposta CJam de Reto Koradi faz. Os códigosbar
,dot
ehat
são reconhecidos apenas pelo último dígito decimal do código de caracteres do primeiro caractere, módulo 3. Eu só adicionar (RIP) para a primeira parte e removê-lo no final para salvar o código para lidar com a primeira parte, especialmente .barf
""""
Experimente online. Suíte de teste.
fonte
barf
... " +1Julia,
204184 bytes * 0,9 = 165,6Essa é uma função anônima que aceita uma sequência e retorna uma tupla de sequências correspondente às linhas superior e inferior. A linha superior terá espaços em branco à direita. Para chamar a função, dê um nome, por exemplo
f=x->...
Ungolfed:
fonte
CJam, 53 bytes
Experimente online
Explicação:
fonte
Haskell, 156 * 0,9 = 140,4 bytes
Exemplo de uso:
Como funciona: analise a sequência de caracteres de entrada por caractere e crie uma lista de pares de caracteres, o esquerdo para a sequência de saída superior e o direito para a sequência de saída inferior. Se a
\
for encontrado, use o sotaque apropriado, ou seja, um espaço para o elemento esquerdo. Por fim, transforme a lista de pares em uma única sequência.fonte
Python 3, 203 bytes
Sem bônus:
Eu realmente espero que haja uma versão mais curta.
fonte
<s></s>
e digitar a nova contagem de bytes, para que possamos ver os passos em direção à concisão.