В этом испытании Вы должны перенести искусство ASCII (обычно это 2D) в 3D!
Как?
как это,
X X DD
X D D
X X DD
чтобы ...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Тогда как мы делаем что ?
Учитывая искусство ascii и N
, повторите это N
раз.
- для каждого персонажа (мы назовем это
A
): - позвольте
B
быть символом, который точно 1 право и 1 вверх отA
- if
B
является пробелом или не определено: - установить
B
наA
.
Спекуляции
- Первый ввод может быть строкой с символами новой строки или списком строк, представляющих 2D-графику ASCII.
- Вы можете использовать
%END%
для обозначения конца ввода, но это не обязательно. - Второй вход будет
N
. Это будет положительное целое число. - все строки строк будут одинаковой длины.
Примеры
Входные данные: ("###\n###",1)
Выход:
###
####
###
правила
Применяются основные правила игры в гольф .
Также, если у вас есть вопросы, обязательно задавайте их в комментариях!
Ответы:
Perl, 81 байт
75 байт код + 6 для
-i -n0
.Обратите внимание, что
\e
символы ASCII,\x1b
но\e
используются для простоты тестирования.Обратите внимание, что в этом решении используются escape-последовательности ANSI и требуется совместимый терминал, а также
-i
аргумент командной строки для передачи желаемого количества «измерений».Использование:
В совместимом с Linux терминале запустите
PS1=
сначала, чтобы убедиться, что ваше приглашение не перезаписывает отображаемое изображение.источник
CJam,
2524 байтаБезымянный блок, который ожидает список строк и количество повторений в стеке и оставляет вместо этого новый список строк.
Проверьте это здесь. (Включает тестовую оболочку, которая для удобства читает строку из STDIN.)
объяснение
источник
S
работает для начального пространства? Кроме того, разрешено ли использовать переменные (которые могли быть перезаписаны) в функции?S
не работает, потому что тогдаf
вместо этого будет отображаться эта строка. Что касается функций, я полагаю, что в «нормальных» языках есть также много представлений функций, которые используют глобальные переменные, которые не вмешиваются между вызовами.APL, 49 байт
Вход: вектор символьных векторов. Пример:
Как это работает:
↑⍵
превращает аргумент в матрицу символов⎕UCS
от символа к целому числу(32∘≠×⊣)
заменить пространства (32) нулями...⍣⍺⊣
применить ⍺ (левый аргумент) умножить на функцию слеваs←0⍪⍵,0
граница с нулями сверху и справа аргумент1⊖¯1⌽
повернуть 1 вверх и 1 вправоs+(s=0)×
сумма к оригиналу смещенной версии, но только сверху нулей оригинала32⌈
превращает нули в 32⎕UCS
от целого числа до символаисточник
MATL , 24 байта
Формат ввода
Так что другой пример
Вывод содержит дополнительные пробелы, которые разрешены вызовом.
Попробуйте онлайн!
Если в качестве входных данных допустим массив двумерных символов (я дважды спрашивал об операторе ...), то первый
c
можно удалить, поэтому 23 байта :Формат ввода в этом случае (все строки имеют одинаковую длину, для чего может потребоваться заполнение пробелами справа):
Попробуйте онлайн!
объяснение
источник
Выпуклый , 23 байта
Количество байтов предполагает кодирование CP-1252.
Безымянный блок, который ожидает список строк и количество повторений в стеке и оставляет вместо этого новый список строк.
Попробуйте онлайн!
Это прямой порт моего ответа CJam на Convex (который в значительной степени основан на CJam). Разница лишь в том, что Convex использует
Ë
вместоer
транслитерации, сохраняя один байт. Спасибо GamrCorps за сообщение об этом.источник
Pyth,
5433 байтаТестирование.
источник
;
?;
не является обычным;
языком программирования.;
переменная;
лямбды ...I
,.?
,V
,F
,;
, (явные утверждения) очень меньше, и они будут заменены?
,m
,u
,F
,M
,L
,R
,#
, ...JavaScript (ES6), 128 байт
Принимает и возвращает массив строк, добавляет дополнительную строку для вывода, гарантирует, что каждая строка содержит хотя бы пробел, разбивает их все на символы, зацикливается при попытке скопировать символы в строку выше и столбец справа, затем рекурсивно вызывает себя, чтобы завершить цикл.
источник
Python 2, 116 байт
Я буду играть в гольф в ближайшее время.
источник
lambda
не короче?e
там. Кроме того,exec
это утверждение, поэтому оно не может быть в лямбде.Рубин, 95 байт
Каждый из них
<Esc>
является буквальным символом ESC (0x1b
).использование
Присвойте лямбду переменной, например
func
.Ungolfed
forward
Последовательность выхода,\e[1C
перемещает курсор вперед (вправо) 1 место и\e[<n>A
перемещает его вверхn
линию. По сути, этот код печатает «слои» задом наперед, заменяя пробелыforward
последовательностью, чтобы избежать перезаписи других слоев пробелом.источник
f=
перед->
игрой в гольф версию. Удалить его на -2 байта.