Напишите программу или функцию, которая принимает положительное целое число и печатает или возвращает художественное изображение ASCII стрелки со стрельбой из лука , масштабированное в соответствии с вводом.
Если вход является 1
выходом
/\
/ \
\__/
||
||
||
||
||
||
||
||
/||\
/ || \
/ || \
// \\
/ \
Если вход является 2
выходом
/\
/ \
/ \
/ \
\ /
\____/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ |__| \
/ / \ \
/ / \ \
// \\
/ \
Если вход является 3
выходом
/\
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\______/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ |____| \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
// \\
/ \
Если вход является 4
выходом
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\________/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
/| |\
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ | | \
/ |______| \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
/ / \ \
// \\
/ \
Шаблон продолжается для больших входных чисел - стрелка соответственно увеличивается.
Обратите внимание, что для любого ввода N:
- Стрелка представляет собой пятиугольник с 2 × N подчеркиваниями в основании, N косыми чертами на каждой из сторон, идущими от основания, и 2 × N косыми чертами на двух сторонах, которые образуют наконечник стрелки.
- Вал (включая часть внутри зачистки) состоит из 11 × N линий двух вертикальных стержней, разделенных 2 × (N-1) пробелами. Самая последняя строка имеет подчеркивание вместо пробелов.
- Флетчинг окружает нижние 3 × N линии вала. Две линии косых черт размером 2 × N проходят по диагонали вниз с обеих сторон вала и соединены вертикальными колоннами косых черт.
- Полная стрелка имеет высоту 16 × N строк и ширину 6 × N символов.
В вашем выводе не должно быть пустых строк перед стрелкой и только до одного завершающего символа новой строки.
Ни в одной из выходных строк не должно быть лишних начальных пробелов (левый край заливки должен быть как можно левее), но любая из строк может иметь любое количество конечных пробелов.
Самая короткая подача в байтах побеждает.
Ответы:
Pyth,
149147146144146Edit 2015-9-23: была ошибка, исправленная на 2 байта. Можно было бы сделать короче, у меня сейчас нет времени.
Все еще кажется слишком длинным для ответа Pyth.
Пояснение (почти в курсе)
Я в основном создаю транспонирование стрелки, поскольку ее формат строки намного проще. Кроме того, я генерирую только половину, а затем обращаюсь к ней, чтобы сэкономить много байтов.
источник
Perl, 298 байт
Многоканальный:
Выход:
Спасибо Dom Hastings за помощь в сохранении 5 (и в расчете) байтов
источник
$w=<>
объявление в первый раз, когда вы его используете,for$y(0..($w=<>)*16-1){
и многие скобки могут быть удалены (некоторые действительно меняют вывод, но я думаю, вы все равно проходите через них!). Также ваш'_'
может быть буквальным_
. Надеюсь, это поможет!Юлия, 452 байта
Этот ответ не очень вдохновляет, и я не играю в гольф за исключением очевидного. Я намерен сделать так, чтобы другие люди победили.
Попробуйте это:
ungolfed:
источник
Руби, 233
Я особенно доволен техникой обтекания, которую я использовал, чтобы рисовать все
\
в голове одним выражением (и аналогично для/
)Неуправляемый в тестовой программе
источник