Есть ли языки, которые особенно хороши в искусстве ASCII?


20

Мне было интересно, есть ли какие-нибудь эзотерические языки или языки игры в гольф, которые специально нацелены на вывод текста и искусство ASCII?

Например, 05AB1E по крайней мере начал с таргетинга на базовые конверсии. Существуют ли какие-либо языки игры в гольф, предназначенные для вывода текста и текста?

Если да, то есть ли у них подсказки и используются ли они в обычном режиме?

Примечание: я не ищу языки, которые способны выводить искусство ASCII, а скорее языки , специально предназначенные для того, чтобы можно было решать задачи относительно коротким и кратким способом.


1
Поскольку вы упомянули об этом, по моему опыту, 05AB1E очень хорошо справляется с задачами ascii art.
DJMcMayhem

1
Я хотел бы видеть язык ASCII-искусства под названием «ASC и II получат». (Серьезно, хотя, если кто-то еще не выходит, там есть немного потенциала.)
Hactar

Я разработал язык под названием Crayon, который создан специально для создания ASCII-графики, но, к сожалению, у меня еще не было времени его реализовать.
ETHproductions

@ Только для ASCII, и я работаю над языком ASCII-art. Это все еще на стадии разработки, но мы будем рады вашим (или чьим-либо) отзывам. Присоединяйтесь к нам в чате, если вам интересно.
DLosc

Ну вот, я думал, что моя идея уникальна ... Я задал этот вопрос, потому что хотел написать язык на основе CharMatrix. Никто не упомянул одну из функций, которые я хотел, так что я мог бы пойти и сделать это в любом случае. Кстати, все ответы и комментарии были отличными, спасибо всем
Сократик Феникс

Ответы:


15

Ну, на самом деле, есть! Одним из таких языков является один я работаю на некоторое время как называется V .

Под капотом V - просто vim , но все нажатия клавиш запускаются автоматически, и содержимое буфера vim печатается в STDOUT, когда программа заканчивается. Это просто делает его более удобным.

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

qq<foobar>@qq@q

который будет повторяться, <foobar>пока не произойдет ошибка. Это имеет 7 байтов стандартного кода. В V это сокращено до ò<foobar>ò.

Некоторые из вещей, которые делают V отличным для ASCII-искусства:

  • Это 2d по своей природе. Одна особенность состоит в том, что она имеет позицию «курсора», где большинство команд делают что-то в зависимости от того, где находится курсор в тексте. Другие команды перемещают местоположение курсора. Например, x удаляет один символ, но Wx перемещает слово вперед, а затем удаляет символ. Поскольку большинство других языков не являются преднамеренно двумерными, это дает хорошее преимущество, когда задача заключается в позиционировании текста в 2D-пространстве.

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

  • Он использует сжатие регулярных выражений для быстрого изменения текста.

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

Поэтому мне очень нравится использовать этот язык, и если вы ищете специфически язык, я очень рекомендую его. Тем не менее , я бы также дал несколько оговорок.

  • Это очень запутанно, чтобы учиться. Он также очень мощный, но поскольку он основан на очень популярном текстовом редакторе, которому 30 лет, существует множество неясных функций, которые могут очень легко запутать новых пользователей.

  • Несмотря на то, что он лучше обрабатывает числа, чем vim, его поддержка чисел все еще невелика. Лично я думаю, что это делает работу более увлекательной (вроде как использование retina для задач, для которых regex никогда не предназначался). : D

  • Это все еще WIP. Есть некоторые ошибки, и некоторые вещи, которые я еще не удосужился добавить.

  • У него не очень много пользователей. (Текущее количество пользователей: 1).

Если вы заинтересованы в получении дополнительной информации, вот несколько хороших ресурсов:

  • Чат , где я был бы рад ответить на любые ваши вопросы и помочь объяснить , как это работает для вас.

  • А советы нити для игры в гольф в Vim, но большинство из советов переносится.

  • Мета сообщение описания V более подробно.


8

Недавно я создал новый язык программирования под названием Turtlèd , который работает с сеткой символов с черепахой, которая перемещается по сетке, пишет в сетку и имеет поток управления с сеткой. Сетка неявно печатается в конце. Благодаря тому факту, что ему не нужно писать пробелы и что он может писать текст пространственно, а не слева направо, сверху вниз, это, вероятно, позволяет ему соответствовать данному определению, будучи хорошим в искусстве ascii.

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


3

Введение в ASCII-Golfing для 05AB1E (базовое преобразование [Простой])

Хотя 05AB1E не предназначен для ASCII-Art напрямую, я выиграл с ним 2 испытания. Самое лучшее в 05AB1E - это то, что даже при простом базовом преобразовании часто есть приемы, которые можно использовать для увеличения и даже вдвое уменьшения количества байтов. Часто в вызовах ASCII есть приемы повторения, которые вы можете использовать, чтобы нарисовать только половину шаблона, а затем перевернуть и объединить. Если это четырехсторонний шаблон, вы можете делать такие вещи, как zip и bifurcate, чтобы нарисовать только угол шаблона. Существует множество методов манипулирования структурой данных, которые можно использовать в сочетании с этой простой идеей сжатия базы.


Вот краткий курс по базовой тактике конверсии:

В 05AB1E я перечисляю все символы, используемые в ASCII-искусстве, например:

--===___===--

Приведет к:

-
=
_

Затем я назначаю им числа, начинающиеся с 1, затем 0, затем 2:

- is 1.
= is 0.
_ is 2.

Я заменяю символы в исходной строке числами:

1122200022211

Я преобразую в десятичную систему, используя минимально возможное основание (3):

879412

( Как это сделать с помощью 05AB1E )

Затем я конвертирую его в базу 214:

Jh]

( Как это сделать с помощью 05AB1E )

Затем я оборачиваю его в следующий код:

05AB1E , 16 байтов

•Jh]•3B…102…-_=‡

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

Или попробуйте сделать это с промежуточными шагами.

Финал объяснил:

•Jh]•            # Push the compressed ASCII integer.
     3B          # Convert it to base 3.
       …102      # Push the keys to the conversion.
           …-_=  # Push the values to the conversion.
               ‡ # Transliterate, replace 0, 1 and 2 with the symbols.

Теперь, с этим конкретным вызовом, строка настолько коротка, что делать не имеет смысла. Вероятно, я бы просто нажал половину строки и «Палиндромиз» на 10 байт "--===__"ûили играл в гольф, как это делал Аднан в комментариях, используя факториального, умного человека •Jh]•3B5!…-=_‡. Он также (один из?) Создатель (ы?) 05AB1E.


Более сложный пример:

/codegolf//a/106621/59376


Также, возможно, попробуйте Денис Колмогорова - язык сложности: Bubblegum ; понятия не имею, как использовать это.


2
Bubblegum на самом деле не является хорошим языком для ASCII-искусства, поскольку он не может принимать входные данные (за исключением двух примеров ), что требуется для большинства задач, связанных с ASCII-искусством. Корица Gum может быть лучшим вариантом, хотя я не знаю много об этом, и, насколько мне известно, нет документов
ETHproductions

1
Не очень важно, но вы можете •Jh]•3B5!…-=_‡
Аднан

1
@ Аднан "--===__"ûза 10;).
Волшебная Урна Осьминога

2

кисть

Paintbrush - это развлекательный язык программирования, созданный мной, Hyper Neutrino, для того, чтобы хорошо разбираться в ASCII-Art. Во многих случаях он не очень хорошо конкурирует с древесным углем, но может принимать участие и делать множество других вещей. Он работает с двумерной сеткой символов и способен манипулировать фоновым символом, манипулировать тем, что считается фоновым символом в то время, перемещать строки и столбцы, перемещать строки и столбцы, копировать строки, столбцы или всю сетку и т. Д.

Некоторые примеры можно найти в репозитории GitHub.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.