Вступление
Система набора текста LaTeX использует макросы для определения ударений. Например, буква is производится \hat{e}
. В этой задаче ваша задача заключается в реализации ASCII-версии этой функциональности.
вход
Ваш ввод - непустая строка печатных символов ASCII. Он не будет содержать переводы строк.
Выход
Ваш вывод представляет собой строку, состоящую из двух строк. Первая строка содержит акценты, а вторая - символы, которым они принадлежат. Он получается из ввода следующим образом ( A
обозначает произвольный символ):
- Каждый
\bar{A}
заменяетсяA
с_
поверх него. - Каждый
\dot{A}
заменяетсяA
с.
поверх него. - Каждый
\hat{A}
заменяетсяA
с^
поверх него. - Для -10% бонуса: каждый
\tilde{A}
заменяютсяA
с~
поверх него. - Все остальные символы имеют пробел над ними.
Например, вход
Je suis pr\hat{e}t.
результаты в выводе
^
Je suis pret.
Правила и оценки
Можно предположить, что символы \{}
встречаются только в макросах \bar{}
, \dot{}
и \hat{}
(и \tilde{}
если вы идете за бонусом). Все макро аргументы точный длинный один символ, так \dot{foo}
и \dot{}
не будет происходить на входе. Выходными данными может быть строка, разделенная новой строкой, или список / пара из двух строк. Допускается любое количество пробелов и предшествующих пробелов, если акценты находятся в правильных местах. В частности, если нет акцентов, вывод может быть одной строкой.
Вы можете написать полную программу или функцию. Наименьшее количество байтов (после бонусов) выигрывает, и стандартные лазейки запрещены.
Контрольные примеры
Без бонуса:
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
С бонусом:
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`
источник
\bar{foo}
это правильный вход?Ответы:
Pyth,
514645434140 байтЯ
\
удаляю фигурные скобки и делю на , как и ответ Рето Коради на CJam. Кодыbar
,dot
иhat
распознаются только последним десятичного знака символа кода первого символа, по модулю 3. Я просто добавить (RIP) в первой части и удалить его , в конце концов , чтобы сохранить код для обработки первой части специально ,barf
""""
Попробуйте онлайн. Тестирование.
источник
barf
... » +1Юлия,
204184 байта * 0,9 = 165,6Это анонимная функция, которая принимает строку и возвращает кортеж строк, соответствующих верхней и нижней строкам. Верхняя строка будет содержать пробел. Чтобы вызвать функцию, дайте ей имя, например
f=x->...
Ungolfed:
источник
CJam, 53 байта
Попробуйте онлайн
Объяснение:
источник
Haskell, 156 * 0,9 = 140,4 байта
Пример использования:
Как это работает: просматривайте входную строку символ за символом и формируйте список пар символов, слева для верхней строки вывода, справа для нижней строки вывода. Если
\
найден a , возьмите соответствующий акцент, в противном случае оставьте пробел для левого элемента. Наконец, преобразовать список пар в одну строку.источник
Python 3, 203 байта
Без бонуса:
Я действительно надеюсь, что есть более короткая версия.
источник
<s></s>
, затем ввести новый счетчик байтов, чтобы мы могли видеть шаги к сжатию.