Вызов:
Некоторый ascii-art - трудная задача, но она облегчает чтение комментариев к коду, особенно когда код плотный. Задача состоит в том, чтобы сделать простой инструмент, который преобразует комментарии в простой ascii-art со стрелками. Комментарии для изменения отделяются пустыми комментариями.
Например, предположив синтаксис комментариев на Haskell, преобразуйте это:
--
-- Here's a thing
-- Here's another thing
-- The most important thing
-- * * *
--
f x=x+1*x*1*1*0
К этому:
-- /------------< Here's a thing
-- | /-------< Here's another thing
-- | | /-< The most important thing
-- | | |
-- v v v
f x=x+1*x*1*1*0
Правила:
- Ваш ответ может быть либо функцией, либо полной программой
- Вы можете выбрать язык, с которым он работает, заменив «-» двумя или более символами, которые разделяют комментарий на каком-либо языке.
- Если используется другой формат комментария, который требует начального и конечного разделителей, каждая строка переформатированных разделов должна быть правильным комментарием
- Разделы, которые нужно переформатировать, отделяются пустым комментарием "\ n - \ n"
- Помимо добавления новых строк, программа не должна изменять какие-либо входные данные, кроме разделенных разделов
- Комментарий, заполненный произвольным количеством пробелов, может появиться непосредственно перед правильно отформатированным разделом вывода.
- Стандартные лазейки запрещены
Дополнительные примеры:
(input)
--
--
(output)
nothing
(input)
[Code Here]
--
-- important
-- *
--
(output)
[Code Here]
-- /-< important
-- |
-- v
(input)
--
-- Do
-- Re
-- Mi
-- Fa
-- So
-- *****
--
(output)
-- /-----< Do
-- |/----< Re
-- ||/---< Mi
-- |||/--< Fa
-- ||||/-< So
-- |||||
-- vvvvv
Подсчет очков:
- Побеждает несколько байтов
- Представления без объяснений или нетривиальный пример ввода / вывода не будут рассматриваться (хотя я оставлю льготный период, чтобы дать время, чтобы добавить такие)
Ответы:
Рубин, 160 знаков
Образец прогона:
Краткое описание:
источник
JavaScript (ES6),
418,237,233, 236 байтовВот так, это моя первая подача на CG.
Я думаю, что это совсем не то же самое, что вашингтонский Гедес. Закончилось на 54 байта короче, чем его первый проход. Сокращение всего этого вручную было изнурительным. Единственное, о чем я сожалею, так это о том, что я пока не могу устранить цикл while, что также позволило бы мне сократить прибыль.Полностью переписать, частично вдохновившись парой других ответов. Я должен закрыть все это на картах, чтобы возвращение стало намного лучше. Фрагмент кода содержит закомментированную версию.
Снял еще несколько байтов и заставил пример работать на себя. (Вам понадобится больший монитор.) :)
Забыл целое письмо в спецификации! К счастью, добавление начального '<' было крошечным, тривиальным исправлением.
Показать фрагмент кода
источник
Python 2, 299 байт
Ожидает завершающий перевод строки во входных данных
Объяснение / Пример
Входные данные:
Разбивает вход по
--\n
. Каждая вторая строка является блоком комментариев с разделителями.Пробегает каждую строку Если строка не является комментарием, то просто печатает строку. В противном случае:
Разбивает каждую строку в блоке комментариев.
Делает нижние две строки, заменяя строки
*
s наv
и|
.Для каждой строки комментариев (в обратном направлении) удалите крайний правый столбец, добавьте
/
,-
добавьте и добавьте комментарий.Распечатать все
Меньше гольфа:
источник
JavaScript (ES6), 253
Как анонимная функция, с кодом для форматирования в виде строкового параметра и возвратом отформатированного кода.
Примечания
Меньше гольфа
Тестовое задание
Показать фрагмент кода
источник