Чи є якісь мови, особливо хороші в мистецтві ASCII?


20

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

Наприклад, 05AB1E, принаймні, починається з орієнтації на базові перетворення. Чи є мови для гольфу, націлені на виведення тексту та виведення тексту?

Якщо так, то чи є вони тут підказки, і чи вони загальні?

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


1
Оскільки ви згадали про це, з мого досвіду 05AB1E дуже добре справляється з мистецькими викликами.
DJMcMayhem

1
Я хотів би бачити мову мистецтва ASCII під назвою "ASC і II отримуватимуть". (Якщо серйозно, якщо хтось ще не вийшов, там є дуже багато потенціалу.)
Хактар,

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

@ ASCII-тільки, і я працюю над мовою мистецтва ASCII. Він все ще знаходиться на стадії розробки, але ми б сподобалися вашому (або комусь) вкладу. Приєднуйтесь до нас у чаті, якщо вам цікаво.
DLosc

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

Відповіді:


15

Ну, власне, є! Одним з таких мов є один я працюю на деякий час як називається V .

Під кришкою V - просто vim , але всі натискання клавіш запускаються автоматично, а вміст буфера vim друкується до STDOUT, коли програма закінчиться. Це просто робить його більш зручним.

Якась історія про мову. Коли я почав використовувати текстовий редактор vim для коду-гольфу, я виявив, що він насправді дуже хороший, але має деякі прикри функції, які ускладнюють його конкуренцію. Наприклад, ви можете встановити сорти "while loop", виконуючи це

qq<foobar>@qq@q

яка буде повторюватися, <foobar>поки не станеться помилка. Це 7 байтів кодової панелі. У V це скорочено до ò<foobar>ò.

Деякі речі, які роблять V чудовим для ASCII-мистецтва:

  • Це 2d від природи. Однією з особливостей є те, що є позиція "курсор", де більшість команд виконують щось на основі того, де знаходиться курсор у тексті. Інші команди переміщують місце розташування курсору. Наприклад, x видаляє один символ, але Wx переміщує слово вперед і потім видаляє символ. Оскільки більшість інших мов навмисно не є двовимірними, це дає гарне перевагу, коли завдання полягає у розміщенні тексту у двовимірному просторі

  • Це цілком на основі струни. Ви можете використовувати деякі операції Mathy, але вони, як правило, більш довгий шлях , щоб досягти речей.

  • Він використовує стиснення регулярного вираження для швидкої зміни тексту.

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

Тому мені дуже подобається користуватися цією мовою, і якщо ви шукаєте конкретно мову , я дуже рекомендую її.Однак я також дав би кілька відмов.

  • Це дуже заплутано вчитися. Він також дуже потужний, але оскільки він заснований на дуже популярному текстовому редакторі, якому вже 30 років, є багато незрозумілих функцій, які можуть дуже легко заплутати нових користувачів.

  • Незважаючи на те, що він краще керує номерами, ніж vim, підтримка номерів все ще не чудова. Особисто я вважаю, що це робить більш приємним працювати (як, наприклад, використання сітківки для завдань, для яких регулярно не було призначено). : D

  • Це все-таки WIP. Є деякі помилки, і деякі речі, яких я ще не довідався додати.

  • У нього не дуже багато користувачів. (Поточна кількість користувачів: 1).

Якщо вам цікаво дізнатися більше, ось кілька хороших ресурсів:

  • Чат , де я був би радий відповісти на будь-які ваші питання і допомогти пояснити , як це працює для вас.

  • Поради нитка для гри в гольф в Vim, але більшість з порад переноситься.

  • Мета повідомлення опису V більш докладно.


8

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

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


3

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

Хоча 05AB1E не призначений безпосередньо для ASCII-Art, я виграв у ньому 2 завдання. Найкраще в 05AB1E - це те, що навіть при простому перетворенні бази, часто є хитрощі, які ви можете використовувати, щоб розширити і навіть вдвічі зменшити кількість байтів. Часто в завданнях ASCII виникають трюки з повторенням, які ви можете використовувати лише для того, щоб намалювати лише половину візерунка, а потім перевернути і з’єднати. Якщо це чотиристоронній візерунок, ви можете робити такі речі, як блискавка та роздвоєння, лише намалювати куточок візерунка. Існує маса методів маніпулювання структурою даних, які можна використовувати у поєднанні з цією простою ідеєю стиснення бази.


Ось швидкий курс аварійного завершення на базовій тактиці перетворення:

У 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.

Тепер із цим конкретним викликом рядок настільки короткий, що робити це не має сенсу. Я б, мабуть, просто просунув половину струни і Palindromize на 10 байт "--===__"ûабо пограти в гольф, як це робив Аднан у коментарях, використовуючи факторний розумний чоловік •Jh]•3B5!…-=_‡. Він також (один з?) Творець (и?) З 05AB1E.


Більш складний приклад:

/codegolf//a/106621/59376


Також, можливо, спробуйте мову колмогорів Денніса на складність: Bubblegum ; поняття не маю, як це використовувати.


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

1
Не дуже важливо, але ви можете покататися на цьому:•Jh]•3B5!…-=_‡
Аднан

1
@Adnan "--===__"ûдля 10;).
Magic Octopus Urn

2

Пензлик

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

Деякі приклади можна знайти в сховищі GitHub.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.