Допустим, у меня есть искусство ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
( Источник )
Но я хочу сосредоточиться на кабеле этого джойстика, потому что я действительно хочу изображение садовой дорожки, ведущей к двери.
,=.
-|=|-
| |
\ \
) )
/ /
( (
Я мог бы копировать строку за строкой, я мог бы использовать текстовый редактор с режимом выбора блока или ... Я мог бы написать некоторый код!
Итак, моему коду нужно пять аргументов:
- Часть искусства ASCII, строка, разделенная новой строкой.
- Ось X левого верхнего угла (с 1 индексом, от левого столбца, положительное целое число)
- Ось Y верхнего левого угла (индексируется 1, из верхней строки, положительное целое число)
- Ширина результирующего изображения (положительное целое число)
- Высота результирующего изображения (положительное целое число)
Тестовые случаи
ASCII изображение:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
Садовая дорожка
- X: 10
- Y: 15
- Ширина: 5
- Высота: 7
Результат:
,=.
-|=|-
| |
\ \
) )
/ /
( (
Значок БД
- X: 3
- Y: 12
- Ширина: 6
- Высота: 4
Выход:
,-""-.
i-..-i
| |
`-..-'
Чужой Старейшина
- X: 9
- Y: 1
- Ширина: 7
- Высота: 10
___
,"---".
: ;
`-.-'
| |
| |
| |
.-\_/-.
| |
`---'
Подпись
- X: 16
- Y: 19
- Ширина: 3
- Высота: 1
hjw
правила
- Вывод можно дать любым удобным способом .
- Либо полная программа или функция приемлемы.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Y
должны BEW15
, а в ТК 2,X
должно быть3
Ответы:
Холст , 1 байт
Попробуй это здесь!
Он принимает высоту, ширину, Y, X и искусство ASCII в качестве входных данных в указанном порядке.
Хотя почти все в арт-объектах ASCII в Canvas 0-проиндексировано,
@
по какой-то причине 1-индексировано. ¯ \ _ (ツ) _ / ¯источник
Python 2 ,
6462 байтаПопробуйте онлайн!
Если
X
иY
может быть0
индексирован:Python 2 , 56 байт
Попробуйте онлайн!
источник
Уголь , 7 байт
Попробуйте онлайн!Ссылка на подробную версию кода. Принимает 0-индексированные координаты. Объяснение:
Распечатать ASCII арт.
Перейти в верхний левый угол нужного прямоугольника.
Обрежьте холст до нужного размера.
источник
Пип
-n
, 21 байтПопробуйте онлайн!
Или, если 0-индексация разрешена ...
Пип
-n
, 17 байт :Попробуйте онлайн!
объяснение
Принимает все пять аргументов в качестве аргументов командной строки.
Приведенные выше решения также предполагают, что входные данные являются идеальным прямоугольником, то есть все линии имеют одинаковую длину. В противном случае требуется 2 дополнительных байта (используйте
-l
вместо-n
):источник
05AB1E ,
2119 байтПопробуйте онлайн!
Или если
0-indexing is allowed
:05AB1E , 18 байт
Попробуйте онлайн!
источник
[X1, X2]
и[Y1, Y2]
какv³ŸNåiy²ŸèJ=
Japt
-R
,1311 байтПопытайся
2 байта сохранены благодаря Камилу Дракари
9 байт, если не для ненужного требования, что решения используют индексирование на основе 1.
объяснение
источник
t
, и еще 2 байта на индексирование 0. Возможно, стоит подождать со вторым, так как OP не уточнил, приемлемо ли индексирование 0, или не исправил тестовые случаи.t
метод работает и с массивами.JavaScript (Node.js) ,
7069 байт-1 Спасибо @Shaggy за
splice()
идею.Попробуйте онлайн!
Данное искусство ASCII раздражает.
источник
J , 45 байт
Попробуйте онлайн!
Примечания: J принимает до 2 аргументов, слева и справа. Правый аргумент - это художественная строка ASCII, левый - список значений UHXW.
Я симулирую символ новой строки, и у вызова функции есть код для преобразования строки в массив.
источник
V , 16 байтов
Попробуйте онлайн!
Ожидается, что ввод будет дополнен пробелами, чтобы быть идеальным прямоугольником. Кроме того, ввод «Y» идет перед «X».
HexDump:
источник
C (gcc) ,
118109 байтВходные данные могут содержать неровные линии: новые строки печатаются, если они существуют в y-диапазоне.
Благодарю потолочный кот за предложение.
Попробуйте онлайн!
источник
Желе , 11 байт
Попробуйте онлайн!
Принимает ASCII-art как многострочную r-строку Python (чтобы избежать проблем с обратной косой чертой).
источник
Haskell , 61 байт
Попробуйте онлайн!
Принимает аргументы в порядке:
x
,y
,w
,h
,s
.источник
удар + coreutils, 37
Интересно, что GNU tail 8.28 (в Ubuntu 18.04) позволяет
+NUM
форматирование, тогда как хвостовая часть GNU 8.29 в TIO требует для этого 2 дополнительных байта-n+NUM
.Попробуйте онлайн!
Я думал, что все это
sed
может быть короче, но на 50 байтов это не так:источник
K4 , 31 байт
Решение:
Примеры:
Объяснение:
Возьмите ввод с 1 индексом, сгенерируйте координаты x / y и индексируйте в ascii art.
источник
р , 62 байта
Возможно, удивительно краткое решение проблемы текста в R, потому что нам не нужно фактически читать весь текст в матрицу.
Попробуйте онлайн!
источник
\ / \ /> 123 байта
Ввод состоит из одной строки разделенных пробелами входных переменных
x
,y
,w
, иh
, затем ASCII Art на следующей строке вперед.объяснение
Этот код использует способность \ / \ /> к самоизменению, помещая ascii art в сам код, который в итоге выглядит следующим образом:
Затем он берет символы в указанном прямоугольнике из кода и выводит его.
источник