Вдохновленный этим ТАКИМ вопросом .
Вызов:
Входные данные:
- Строка
- Персонаж
Выход:
Создайте ASCII-арт из струн алмазного квадрата во всех четырех направлениях, с первым символом струны в центре и направленным наружу. Который находится внутри квадратного ковра в стиле ASCII, с характером в качестве наполнителя. Это может звучать довольно расплывчато, поэтому вот пример:
Вход: = string
, = .
Выход:
..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........
Правила соревнований:
- Строка ввода также может быть списком символов
- Вывод также может быть списком строк или строк символов
- Входная строка и символ гарантированно не являются пустыми
- Строка гарантированно не содержит символа
- И строка, и символ могут быть напечатаны только в формате ASCII (диапазон Юникода [32,126], пробел '' до и включая тильду '~')
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Вход: = 11111
, = 0
Выход:
00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000
Вход: = 12345ABCDEF
, = #
Выход:
####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################
Вход: = @+-|-o-|-O
, = :
Выход:
::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::
Вход: = AB
, = c
Выход:
ccBcc
BcAcB
ccBcc
Вход: = ~
, = X
Выход:
~
Вход: = /\^/\
, = X
Выход:
XXXXXXXX\XXXXXXXX
XXXXXX\X/X\XXXXXX
XXXX\X/X^X/X\XXXX
XX\X/X^X\X^X/X\XX
\X/X^X\X/X\X^X/X\
XX\X/X^X\X^X/X\XX
XXXX\X/X^X/X\XXXX
XXXXXX\X/X\XXXXXX
XXXXXXXX\XXXXXXXX
()()()
.Ответы:
Холст , 8 байт
Попробуй это здесь!
7 байт, но отражает кучу символов.
источник
R ,
1189592 байтПопробуйте онлайн!
Благодаря:
источник
for
петлям в R, по крайней мере, для игры в гольф.pmin
логику с перестановкой :-)J ,
5956 байтПопробуйте онлайн!
Слишком долгое решение для J ... (полностью моя вина)
источник
R , уродливая 118-байтовая версия
Позволяя вводу быть вектором из отдельных символов, и выводить матрицу вместо печати хорошего ascii art.
Попробуйте онлайн!
R ,
161157 байтсохранено 4 байта с использованием ifelse вместо условного изменения
y
Попробуйте онлайн!
разглаженный и прокомментированный
хммм, кажется самый длинный ответ до сих пор!
источник
Python 2 ,
97969084 байтаПопробуйте онлайн!
источник
05AB1E ,
1511 байтПопробуйте онлайн! или как тестовый набор
объяснение
источник
»
его в нижний колонтитул. :)J ,
35 3433 байтаПопробуйте онлайн!
Справа налево:
с минус длина s
-&#
длинаi:
Диапазон от отрицательного n до n1-|+/|
Абсолютное значение, внешняя сумма с абсолютным значением, вычесть из 1{: (<*-)
Сравните матрицу с концом диапазона (the-&#
), 0 для меньше или равно, 1 в противном случае. Также вычтите матрицу из конца диапазона. Умножим вместе. Двойное вычитание сохраняет байт и дает что-то вроде этогоОтрицательные индексы начинаются с -1, как в питоне. Осталось только вставить нулевые столбцы.
1j1( #"1
для каждой строки повторите каждый элемент 1 раз и добавьте один 0,}:@
затем отбросьте последний (ноль),{~
конкатБольшое спасибо Галену Иванову за алгоритм.
источник
K (нгн / к) , 38 байт
Попробуйте онлайн!
{
}
функция с аргументамиx
(строка s ) иy
(символ c )|x
обратныйx
y,'
готовитьсяy
к каждому+
транспонирования,/
CONCAT1_
бросить первый символв этот момент у нас есть строка
x
экземпляров length ( ), заy
которыми следуют символы изx
#x
длинаx
(#x)'
скользящее окно этого множества последовательных символов2{
}/
сделать дважды+x,1_|x
объединитьx
с обратнымx
без первого элемента и транспонироватьy,''
готовитьсяy
к каждому,/'
Конкат каждый1_'
бросьте по одному от каждогоисточник
Japt , 15 байт
Возвращает массив строк
Попытайся
источник
Древесный уголь , 15 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Первоначально отправлено в качестве комментария к удаленной записи песочницы . Объяснение:
Установите фон для второго входа
c
.Нанесите на карту первый вход,
s
чтобы сгенерировать все суффиксы и неявно напечатать их в отдельных строках.Отражать горизонтально и вертикально.
Добавьте дополнительное пространство по горизонтали.
источник
Рубин ,
958475 байтПопробуйте онлайн!
Принимает входную строку как массив символов. Возвращает массив строк.
источник
Wolfram Language (Mathematica) , 121 байт
Попробуйте онлайн!
источник
Japt , 16 байт
Примечание: я буду играть в гольф :)
Попробуйте онлайн!
источник
PowerShell , 120 байт
Попробуйте онлайн!
Некоторые дни, когда диапазоны индекса вместо ломтиков действительно болят. Сегодня один из тех дней. Из-за того, что соединенные диапазоны портятся при работе с отдельными элементами (например, возвращая 0..0 + 1..0), используется специальный регистр, чтобы полностью его избежать (ценой многих байтов).
источник
Japt , 15 байт
Попытайся
источник
Желе , 11 байт
Попробуйте онлайн!
Левый аргумент:s , с (как один символ, а не как строка).
Правильный аргумент:
Вывод: список строк Jelly (отображается как список списков строк Python
ŒṘ
сY
1\n
символом , замените на, чтобы увидеть вывод -joined).источник
PowerShell ,
8283 байта+2 байта благодаря Весках: исправлена ошибка с одиночным символом
-1 байт:
Input-string may also be a list of characters
используется правилоПопробуйте онлайн!
Менее гольф:
источник
~
Пип ,
2420 байтИспользуйте
-l
флаг, чтобы получить удобочитаемый вывод. Попробуйте онлайн!объяснение
Например, с входами
abcd
и.
:источник
Атташе , 57 байт
Попробуйте онлайн! Вывод представляет собой список строк.
объяснение
источник
Perl 6 , 79 байт
Попробуйте онлайн!
Анонимный кодовый блок, который принимает ввод данных карри (например,
f(char)(string)
) и возвращает список строк. Я думаю, что другой подход будет короче.Объяснение:
источник
APL (Dyalog Classic) ,
3231 байтПопробуйте онлайн!
источник
Perl 5 с
-lF
,-M5.010
, 71 байтПопробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 249 байт
Попробуйте онлайн!
Это должно быть улучшено ...
источник
JavaScript (Node.js) , 143 байта
Попробуйте онлайн!
Немного больше размышлений привело бы к вычислению в терминах одномерного массива и меньшего количества байтов.
источник
Котлин , 250 байт
Примечание. В настоящее время Kotlin tio не может вернуть новый класс, поэтому этот код получает исключение нулевого указателя. Это также происходит с кодами, которые я ранее разместил, которые работали в то время. Я предполагаю, что это в конечном счете будет исправлено, но не смог найти контакт поддержки, чтобы сообщить о проблеме. Это также можно запустить здесь .
Попробуйте онлайн!
источник
.joinToString("\n")
из подсчета байтов (и сделать это в нижнем колонтитуле за пределами функции).Gaia , 19 байт
Попробуйте онлайн!
Объяснение, чтобы следовать.
источник
JavaScript (Node.js) , 101 байт
Попробуйте онлайн!
источник
TSQL-запрос, 191 байт
В MS-SQL Server Management Studio нажмите Ctrl-T перед выполнением этого запроса, это изменит вывод на текст.
Этот скрипт строит вывод слева направо в одну длинную «строку», вычисляя значение, которое нужно поместить в каждую позицию. Вывод ограничен 4096 символами.
Golfed:
Ungolfed:
Мне пришлось внести некоторые изменения, чтобы отформатировать вывод в онлайн-версии.
Попробуйте онлайн
источник
Java (JDK) ,
213199198 байтПопробуйте онлайн!
-14 bytes
благодаря @KevinCruijssen-1 byte
благодаря @ceilingcatUngolfed
источник
Wolfram Language (Mathematica) , 68 байт
Попробуйте онлайн!
Принимает список символов (вместе с символом-заполнителем) в качестве входных данных и выводит матрицу символов.
Чтобы взять индекс списка символов, мы используем
list[[index]]
, который внутренне расширен доPart[list, index]
. Если индекс действителен, это выражение оценивается как значение этого индекса. Если нет - если индекс не является целым числом или находится за пределами диапазона - выражение остается не оцененным.Простейшим (самым коротким) шаблоном, который соответствует,
Part[...]
но не одному символу, является_@__
соответствие любого выражения с одним или несколькими аргументами.источник