Мне было интересно, есть ли какие-нибудь эзотерические языки или языки игры в гольф, которые специально нацелены на вывод текста и искусство ASCII?
Например, 05AB1E по крайней мере начал с таргетинга на базовые конверсии. Существуют ли какие-либо языки игры в гольф, предназначенные для вывода текста и текста?
Если да, то есть ли у них подсказки и используются ли они в обычном режиме?
Примечание: я не ищу языки, которые способны выводить искусство ASCII, а скорее языки , специально предназначенные для того, чтобы можно было решать задачи ascii-art относительно коротким и кратким способом.
Ответы:
Ну, на самом деле, есть! Одним из таких языков является один я работаю на некоторое время как называется V .
Под капотом V - просто vim , но все нажатия клавиш запускаются автоматически, и содержимое буфера vim печатается в STDOUT, когда программа заканчивается. Это просто делает его более удобным.
Немного истории на языке. Когда я начал использовать текстовый редактор vim для code-golf, я обнаружил, что на самом деле он довольно хорош, но обладает некоторыми раздражающими функциями, которые усложняют его конкуренцию. Например, вы можете настроить цикл while, выполнив
который будет повторяться,
<foobar>
пока не произойдет ошибка. Это имеет 7 байтов стандартного кода. В V это сокращено доò<foobar>ò
.Некоторые из вещей, которые делают V отличным для ASCII-искусства:
Это 2d по своей природе. Одна особенность состоит в том, что она имеет позицию «курсора», где большинство команд делают что-то в зависимости от того, где находится курсор в тексте. Другие команды перемещают местоположение курсора. Например, x удаляет один символ, но Wx перемещает слово вперед, а затем удаляет символ. Поскольку большинство других языков не являются преднамеренно двумерными, это дает хорошее преимущество, когда задача заключается в позиционировании текста в 2D-пространстве.
Он полностью основан на строках. Вы можете использовать некоторые математические операции, но обычно это более долгий способ достижения цели.
Он использует сжатие регулярных выражений для быстрого изменения текста.
Вся ее внутренняя память, представляющая собой 2-мерный массив символов, неявно печатается после завершения программы. Кроме того, все входные данные неявно добавляются в его внутреннюю память , что приятно, когда большая часть задачи связана с определенным изменением входных данных.
Поэтому мне очень нравится использовать этот язык, и если вы ищете специфически ascii-art язык, я очень рекомендую его. Тем не менее , я бы также дал несколько оговорок.
Это очень запутанно, чтобы учиться. Он также очень мощный, но поскольку он основан на очень популярном текстовом редакторе, которому 30 лет, существует множество неясных функций, которые могут очень легко запутать новых пользователей.
Несмотря на то, что он лучше обрабатывает числа, чем vim, его поддержка чисел все еще невелика. Лично я думаю, что это делает работу более увлекательной (вроде как использование retina для задач, для которых regex никогда не предназначался). : D
Это все еще WIP. Есть некоторые ошибки, и некоторые вещи, которые я еще не удосужился добавить.
У него не очень много пользователей. (Текущее количество пользователей: 1).
Если вы заинтересованы в получении дополнительной информации, вот несколько хороших ресурсов:
Чат , где я был бы рад ответить на любые ваши вопросы и помочь объяснить , как это работает для вас.
А советы нити для игры в гольф в Vim, но большинство из советов переносится.
Мета сообщение описания V более подробно.
источник
Недавно я создал новый язык программирования под названием Turtlèd , который работает с сеткой символов с черепахой, которая перемещается по сетке, пишет в сетку и имеет поток управления с сеткой. Сетка неявно печатается в конце. Благодаря тому факту, что ему не нужно писать пробелы и что он может писать текст пространственно, а не слева направо, сверху вниз, это, вероятно, позволяет ему соответствовать данному определению, будучи хорошим в искусстве ascii.
В настоящее время нет никаких документов, поэтому вы, вероятно, не сможете использовать их, если не хотите читать мой переводчик, что, вероятно, не то, что вы хотите делать. Я думаю, что в интерпретаторе также могут быть ошибки, но спецификация недостаточно развита, чтобы сказать, является ли это ошибкой. Turtlèd, вероятно, скоро будет закончен, с документами и всем, хотя
источник
Введение в ASCII-Golfing для 05AB1E (базовое преобразование [Простой])
Хотя 05AB1E не предназначен для ASCII-Art напрямую, я выиграл с ним 2 испытания. Самое лучшее в 05AB1E - это то, что даже при простом базовом преобразовании часто есть приемы, которые можно использовать для увеличения и даже вдвое уменьшения количества байтов. Часто в вызовах ASCII есть приемы повторения, которые вы можете использовать, чтобы нарисовать только половину шаблона, а затем перевернуть и объединить. Если это четырехсторонний шаблон, вы можете делать такие вещи, как zip и bifurcate, чтобы нарисовать только угол шаблона. Существует множество методов манипулирования структурой данных, которые можно использовать в сочетании с этой простой идеей сжатия базы.
Вот краткий курс по базовой тактике конверсии:
В 05AB1E я перечисляю все символы, используемые в ASCII-искусстве, например:
--===___===--
Приведет к:
Затем я назначаю им числа, начинающиеся с 1, затем 0, затем 2:
Я заменяю символы в исходной строке числами:
Я преобразую в десятичную систему, используя минимально возможное основание (3):
( Как это сделать с помощью 05AB1E )
Затем я конвертирую его в базу 214:
( Как это сделать с помощью 05AB1E )
Затем я оборачиваю его в следующий код:
05AB1E , 16 байтов
Попробуйте онлайн!
Или попробуйте сделать это с промежуточными шагами.
Финал объяснил:
Теперь, с этим конкретным вызовом, строка настолько коротка, что делать не имеет смысла. Вероятно, я бы просто нажал половину строки и «Палиндромиз» на 10 байт
"--===__"û
или играл в гольф, как это делал Аднан в комментариях, используя факториального, умного человека•Jh]•3B5!…-=_‡
. Он также (один из?) Создатель (ы?) 05AB1E.Более сложный пример:
/codegolf//a/106621/59376
Также, возможно, попробуйте Денис Колмогорова - язык сложности: Bubblegum ; понятия не имею, как использовать это.источник
•Jh]•3B5!…-=_‡
"--===__"û
за 10;).кисть
Paintbrush - это развлекательный язык программирования, созданный мной, Hyper Neutrino, для того, чтобы хорошо разбираться в ASCII-Art. Во многих случаях он не очень хорошо конкурирует с древесным углем, но может принимать участие и делать множество других вещей. Он работает с двумерной сеткой символов и способен манипулировать фоновым символом, манипулировать тем, что считается фоновым символом в то время, перемещать строки и столбцы, перемещать строки и столбцы, копировать строки, столбцы или всю сетку и т. Д.
Некоторые примеры можно найти в репозитории GitHub.
источник