Проводя некоторые исследования для другой задачи, которую я формулирую, я наткнулся на график Кейли , в частности, этот . Так как я являюсь одним из лучших авторов тестов для ascii-art , мне, конечно, пришлось сделать ASCII-арт-вызов для этого.
Ваша задача состоит в том, чтобы создать это художественное изображение ASCII графа Кэли свободной группы на двух генераторах следующим образом:
+
+++
+ | +
++-+-++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ +++ | +++ +
+++ + | + +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+ | | | | | +
+++ | | | | | +++
+ | | | | | | | +
++-+----+-----------+--------------------------+--------------------------+-----------+----+-++
+ | | | | | | | +
+++ | | | | | +++
+ | | | | | +
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+++ | | | +++
+ | | | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ + | + +++
+ +++ | +++ +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
++-+-++
+ | +
+++
+
вход
Нет ввода, если только ваш язык явно не требует ввода для запуска.
Выход
Художественное представление ASCII показано выше.
MD5 Хеши
Поскольку это довольно большой вывод, для проверки вашей работы приведем несколько хэшей MD5 примеров форм вывода (все это UTF-8 без спецификации):
- Квадратные пробелы,
CR/LF
переводы строки и завершающий перевод строки954B93871DAAE7A9C05CCDF79B00BF3C
- это представление, использованное выше. - Квадратные отступы,
CR/LF
переводы строки, без новой строки -28405EF91DA305C406BD03F9275A175C
- Квадратные отступы,
LF
переводы строки и завершающий перевод строки -8CA65FB455DA7EE5A4C10F25CBD49D7E
- Квадратные отступы,
LF
переводы строки, без новой строки -FDB1547D68023281BB60DBEC82C8D281
- Нет завершающих пробелов,
CR/LF
перевода строки и завершающего перевода строки -77FDE8CE5D7BD1BDD47610BA23264A19
- Нет завершающих пробелов,
CR/LF
перевода строки, нет завершающего перевода строки -EAD390C3EFD37F0FCACE55A84B793AB5
- Нет завершающих пробелов,
LF
перевода строки и завершающего перевода строки -1F6CAB740F87881EB2E65BED65D08C36
- Нет завершающих пробелов,
LF
перевода строки, нет завершающего перевода строки -7D41CE1E637619FEA9515D090BFA2E9C
- Если есть дополнительный MD5, который вы хотите сравнить, пожалуйста, дайте мне знать, и я создам его и обновлю задачу.
правила
- Начальные или завершающие символы новой строки или пробелы являются необязательными, при условии, что сами символы выстроены правильно.
- Допустимы либо полная программа, либо функция. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
code-golf
ascii-art
kolmogorov-complexity
fractal
AdmBorkBork
источник
источник
-
/|
s следуют формуле,(2<<n)-n-2
а не(1<<n)-1
тому, что было бы моим первоначальным предположением.Ответы:
JavaScript (ES6),
204195188180 байтКвадратные отступы, LF переводы строк
иотсутствие завершающего перевода строки, хотя я не проверял MD5.Параметризованная версия для
222216207199 байтов. Объяснение: Выходной размер составляет 9119 символов ASCII, включая 46 символов новой строки. (Для параметризованной версии выходной размер рассчитывается с учетом завершающей новой строки.) Каждый символ определяется индивидуально, во-первых, проверяя, следует ли вводить новую строку, в противном случае вызывая функцию с координатами относительно начала координат в середине финальной строки. диаграмма. Функция рекурсивно проверяет точку по ближайшим крестикам каждого размера к точке и возвращает соответствующий символ в зависимости от того, обнаружена ли точка, лежащая на центре или оси креста.источник
Röda ,
284280238234 байтаПопробуйте онлайн!
Это анонимная функция. Я использовал символы новой строки вместо точек с запятой, так что он очень хорошо отформатирован!
Рекурсивная функция
f
создает график в двумерном массивеt
, который затем печатается в последней строке.Я не нашел способа вычислить
27,12,5,2,1
в нескольких байтах, поэтому они жестко запрограммированы.источник
b_shiftl
Оператор существует, но я думаю, он слишком длинный, чтобы использоваться в этой программе.10000110001200020001
->1168671727
сомневаюсь, что вы можете преобразовать и разделить менее чем на 2 байта, хотя хе ...Древесный уголь ,
5043 байтаПопробуйте онлайн! Ссылка на подробную версию кода. Первоначально я пробовал разные отражения и повороты, но они либо не делали то, что я хочу, либо в некоторых случаях глючили. Затем я попробовал подход с вложенным циклом, но теперь я переключился на этот итерационный метод, который работает, рисуя количество линий между каждым внутренним крестом в зависимости от того, на сколько степеней 3 делится число шага. Его можно легко изменить, чтобы он принимал параметр размера по цене всего 4 байта:
Изменить: с тех пор я разработал, как использовать
RotateShutterOverlap
для достижения этой задачи, но, к сожалению, это занимает у меня 44 байта:Если
RotateShutterOverlap
бы переменная вращалась целым числом, это уменьшило бы ее до 40 байт:Таким образом, использование параметра списка вращений занимает 45 байтов:
источник
05AB1E , 620 байт
Попробуйте онлайн!
Все, что я сделал, это разрезал шаблон на четверти, преобразовал символы в base-4, сжал 1/4 шаблона в base-214 и затем перевернул его по линиям симметрии. Я работаю над чем-то более умным, используя настоящий алгоритм, но пока я не закончу, это то, что будет здесь для меня.
источник
05AB1E
ответ, который я видел. xD Обычно это 6,20 вместо 620 с ответами на этом языке. ;)Python 3, 264 байта
Использует пару взаимно рекурсивных функций. F рисует линии, а P вставляет «+». Можно больше играть в гольф, но сейчас не вовремя.
источник
C 236 байт
Просто рекурсивно строим таблицу символов перед ее отображением.
Попробуйте онлайн!
Спасибо @Neil за то, что я понял, что длина ветвей соответствует действующему правилу.
источник