Codegolf - Распечатать Инструкцию По Вводу В Чат

  • Автор темы Wenlonger
  • Обновлено
  • 23, Oct 2024
  • #1

Фон

Насколько мы можем судить, попробовав все (кроме мошенничества с ZWSP), вы не можете набрать

 \`                => `\\``
`\\`\`\\``        => `\`\\\`\\`\\\`\``
`\`\\\`\\`\\\`\`` => `\`\\`\\\\`\\\`\\\\`\\`\``
``````            => `\`\`\`\`\`\``
\\\\\\\\\`        => `\\\\\\\\\\``
`                 => `\``
`\`\`\`\`\`\`\`   => `\`\\`\\`\\`\\`\\`\\`\\``
 
in Чат обмена стека. Однако вы можете ввести `\\`` by doing `\`\\`\`` .

Итак, если вы хотите рассказать кому-то в чате, как набирать обратную косую черту-обратную галочку, вам нужно будет ввести `\\`` to format \` в кодовый блок.

Испытание

Ваша задача будет заключаться в том, чтобы взять строку обратных кавычек и обратных косых черт и вывести строку обратных кавычек и обратных косых черт, которая будет отформатирована в нее (как блок кода), когда вы вводите ее в чат SE. Вы можете проверить это в песочница чата.

Важно отметить, что обратная косая черта не позволяет следующей обратной косой черте начинать или завершать блок кода, но на самом деле обратная косая черта не создает следующую обратную косую черту. нет escape - по сути, три обратных косых черты и обратная галочка станут двумя буквальными обратными косыми чертами и буквальными обратными косыми чертами, последняя из которых больше не будет функционировать как разделитель блоков кода.

Таким образом, один из способов решения этой проблемы — взять каждый блок обратных косых черт (включая блоки нулевой длины между последовательными обратными кавычками) и добавить к каждому обратную косую черту, а затем окружить строку обратными кавычками.

Вы можете предположить, что это возможно; то есть ввод не будет заканчиваться обратной косой чертой. Вам также не нужно обрабатывать пустой ввод.

Ввод/вывод

Ввод и вывод будут приняты и предоставлены в виде строки обратных кавычек и обратных косых черт. Для этого испытания вы должны использовать именно этих персонажей. Вместо этого вы можете вводить или выводить в виде плоского списка символов, при этом ввод и вывод не обязательно должны использовать один и тот же формат.

Тестовые случаи

Эти тестовые примеры соответствуют моему примеру решения. На самом деле я не знаю, существует ли другое решение, но если вы сможете найти альтернативу, которая работает в чате SE, а не только вышеупомянутый подход, я могу предложить награду.

`\

Эталонная реализация на Питоне; вы можете ввести столько строк, сколько захотите, и на каждую из них будет выведен действительный ответ, используя мой подход.

Стандартные лазейки как обычно, запрещены.

Это непростая задача, поэтому в своей языковой категории побеждает самый короткий код (в байтах на каждый язык). Удачной игры в гольф!

#код-гольф #код-гольф #строка

Wenlonger


Рег
17 Jan, 2024

Тем
86

Постов
189

Баллов
619
  • 26, Oct 2024
  • #2

Пип, 6 байт

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 -p 

Попробуйте онлайн!

Объяснение

Эм... ну, это интересно.

Так уж получилось, что тип шаблона Пипа (используемый для регулярных выражений) ограничен обратными кавычками. И эти обратные кавычки можно экранировать внутри шаблона с помощью обратной косой черты.

... И более того, что код генерации Пипа представитель шаблона, по-видимому, неправильный, потому что он также должен избегать обратных косых черт, но на самом деле он экранирует только обратные кавычки. Именно такого поведения требует этот вопрос.

"Это не баг, это фича"? ¯\_(ツ)_/¯

$\

Хорошо, я посмотрел на это еще раз и думаю, что это на самом деле это не ошибка. Причина, по которой я подумал, что это ошибка, заключалась в том, что некоторые входные данные невозможно ввести как литералы шаблона. Поскольку они являются «невозможными» шаблонами, имеет смысл, что их репродукции не являются правильно сформированными представлениями литералов шаблонов.

$/

Вы не можете ввести регулярное выражение для }{ in Pip because -l не является правильно сформированным регулярным выражением. (Если вам нужно регулярное выражение, соответствующее строке ` , you should use $/ , который вводится как $\ . Clear as mud? Great.)

Таким образом, входные данные только с обратными косыми чертами четной длины выдают правильно сформированные повторы, но если есть нечетная серия обратных косых черт, все ставки отключены.

 

Eugene76


Рег
27 Sep, 2010

Тем
74

Постов
219

Баллов
639
  • 26, Oct 2024
  • #5

Виксал 2.3, 7 байт

-0140

До недавнего времени q (uneval) просто заключал строку в обратные кавычки. Теперь он избегает обратных косых черт и обратных кавычек, чего нам не нужно.

Кроме того, до недавнего времени строки во входных данных не могли быть разделены обратными кавычками, но теперь они могут быть разделены, поэтому входные данные обрабатываются неправильно.

Остальное — это просто замена обратных кавычек обратными кавычками и обратной косой чертой.

Так что никакого TIO, но смело скачивайте интерпретатор по ссылке выше и пробуйте.

 

ShottSatwhoks90


Рег
25 Oct, 2024

Тем
79

Постов
178

Баллов
623
  • 26, Oct 2024
  • #7

КвадР, 11 байт

-p0140l

Попробуйте онлайн!

Просто заменяет (т.е. вставляет) начало/конец обратным кавычком,

и любой обратный апостроф с обратной косой чертой и обратным апострофом.

Эквивалент функции Dyalog APL. $_ ' '\`'

 

Arigatchi


Рег
22 Dec, 2008

Тем
61

Постов
185

Баллов
490
  • 26, Oct 2024
  • #8

05AB1E (устаревший), 9 байты

\`

Предполагается, что ввод всегда будет содержать обратный апостроф.

Попробуйте онлайн или проверить все тестовые случаи.

Объяснение:

`

Использует устаревшую версию 05AB1E, поскольку мин/макс новой версии 05AB1E не работает с символами (она возвращает первый символ вместо самого младшего/самого высокого символа Юникода).

 

Samsungfh


Рег
11 May, 2011

Тем
68

Постов
220

Баллов
570
  • 26, Oct 2024
  • #11

Перл 5 + $\ , 16 bytes

print

Попробуйте онлайн!

Объяснение

Относительно стандартное решение, здесь используется $_ flag to set -p к print which is automatically output after every call to ` . Поскольку мы также используем $\ flag, -l140 будет автоматически $_=$\.s/`/\\`/gr ed so we set it to -pl140 объединено с func[s][rejoin[t:"`"replace/all s t"\`"t]] esult of '`'+$args.replace('`','\`')+'`' замена Z # Get the maximum character of the (implicit) input-string (the backtick `) .: # Replace all backticks in the input „\` # with "\`" Z # Then get the backtick again with the maximum (without popping the string) .ø # Surround the string with this backtick as leading/trailing character # (after which the result is output implicitly) with Z„\`.:Z.ø в (неявном) вводе, хранящемся в '^|$' ''⎕R' .


Перл 5 + ^|$ ` ` \\` , 19 bytes

"`{r'`_i'\}`

Попробуйте онлайн!

Объяснение

Немного интереснее, но длиннее, в этом ответе используется \`‛\`Vq flag to split input on n=>'`'+n.replace(/`/g,'\\`')+'`' вместо символов новой строки, что означает первую часть кода (перед ṣ”`j⁾\`⁾``j - Main link. Takes a string S on the left ṣ”` - Split S on backtick j⁾\` - Join with "\`", essentially replacing backticks with "\`" ⁾``j - Surround with backticks ) will be called for each part of the string (up to, but excluding ṣ”`j⁾\`⁾``j ), добавляя саму строку, объединенную с lambda s:'`%s`'%s.replace('`','\`') to `\\\`` который предварительно инициализируется для \\` ( \` ) с помощью \` . Once all the input has been parsed ( \` ), Input Repr Comment ` `\`` Properly formed: backtick is escaped with a backslash \\` `\\\`` Properly formed: backslash is also escaped with a backslash \` `\\`` Improperly formed: first backtick is not escaped is appended to q Read a line of stdin ``. Cast it to a Pattern by concatenating an empty Pattern to it RP Get the repr который выводится неявно из-за RP``.q .

 

Arbuscula


Рег
14 Jun, 2010

Тем
73

Постов
185

Баллов
580
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно

Lumtu.com © 2024