Ваша цель - ввести любой произвольный текст, например:
This is some text
И выведите этот текст в формате кода для постов (разметка SE) и комментариев (мини-разметка) на Stack Exchange, например:
`This is some text`
`This is some text`
Тем не менее, это становится сложнее. Рассмотрим вход:
Perl has a variable called $`
Выход должен быть
`` Perl has a variable called $` ``
`Perl has a varaible called $\``
Полные правила для форматирования:
Полные сообщения (полная SE Markdown)
Шаг 1: подсчитать наименьшее число, для которого в строке не так уж много последовательных обратных бэкков Давайте назовем это
n
. (Например, для строкиpotato
,n
равен 1, дляthis is a backtick: `
,n
равно 2, и` `` ``` ````` ``````
,n
равно 4.)Шаг 2: обернуть строку в
n
кавычки. Если строка начинается или заканчивается обратным трюком, вы должны также переносить пробелы. (Например,potato
становится`potato`
,this is a backtick: `
становится`` this is a backtick: ` ``
и` `` ``` ````` ``````
становится```` ` `` ``` ````` `````` ````
.
Комментарии (мини-уценка)
- Wrap в
`
и избежать всех`
«S с\`
. (Например,potato
становится`potato`
,this is a backtick: `
становитсяthis is a backtick: \`
и` `` ``` ````` ``````
становится\` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`
.
- Wrap в
Это Код-гольф; выигрывает самый короткий ответ в количестве байтов.
\
; чтобы отформатировать\
, нужно сделать``\``
. Кроме того, все, что заканчивается результатом, приводит\
к той же самой проблеме:asdf\
производит `asdf`Ответы:
APL (90)
(Да, кодировка APL вписывается в байт, вот кодовая страница IBM 907. )
Это функция, которая принимает строку и возвращает массив из двух строк, где первая строка - это представление комментария, а вторая строка - полное представление поста .
тесты:
Примечание: я дал функции имя для удобства чтения, в этом нет необходимости использовать его (вы можете просто поставить аргумент рядом с анонимной функцией), поэтому я не считал его.
источник
Руби, 119
Ungolfed:
источник