Напишите программу или функцию, которая рисует дерево деревьев, тем самым создавая лес.
Деревья нарисованы как сложение пирамиды. Первая (верхняя) строка содержит 1
дерево, следующая строка вниз содержит 2
(всего 3
), следующая содержит 3
(всего 6
) и так далее. Если деревьев недостаточно, чтобы завершить полный ряд, заполните его слева и оставьте пятна справа пустыми. Кроме того, деревья более низкого уровня слегка перекрывают деревья верхнего уровня из-за их размещения.
Это лес размером 1
/\
//\\
///\\\
||
||
Это лес размером 2
/\
//\\
/\///\\\
//\\ ||
///\\\||
||
||
Это лес размером 3
/\
//\\
/\///\\\/\
//\\ || //\\
///\\\||///\\\
|| ||
|| ||
Это лес размером 4
/\
//\\
/\///\\\/\
//\\ || //\\
/\///\\\||///\\\
//\\ || ||
///\\\|| ||
||
||
Это лес размером 5
(обратите внимание, что верхушка пятого дерева покрывает ствол первого дерева)
/\
//\\
/\///\\\/\
//\\ || //\\
/\///\\\/\///\\\
//\\ || //\\ ||
///\\\||///\\\||
|| ||
|| ||
(пропустить несколько)
Это лес размера 8
(расширение шаблона)
/\
//\\
/\///\\\/\
//\\ || //\\
/\///\\\/\///\\\/\
//\\ || //\\ || //\\
/\///\\\/\///\\\||///\\\
//\\ || //\\ || ||
///\\\||///\\\|| ||
|| ||
|| ||
и так далее.
вход
Один положительное целое число в любом удобном формате , n > 0
.
Выход
ASCII-художественное представление леса, следуя приведенным выше правилам. Начальные / конечные новые строки или другие пробелы являются необязательными при условии, что все деревья выстроены в линию соответствующим образом.
правила
- Допустимы либо полная программа, либо функция. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
n
, каковы положения деревьев?Ответы:
Haskell 310 байтов
Назовите это
w 5
, например.Вот несжатый код:
источник
JavaScript (ES6),
357297276 байтРедактировать: 21 байт благодаря @KritixiLithos.
источник
repeat
, вы можете изменитьblah.repeat(val)
наblah[w="repeat"]
(val), а затем вы можете изменить последующие вхожденияrepeat
на просто[w](val)
вместо того, чтобы сохранять байтыrepeat
находится внутриfor
цикла и не будет работатьn=1
, но я все еще смог сэкономить 21 байт.C ++ (в Windows),
330312308304303 байтаЗвоните с:
источник
C (в Windows)
297295294 байтаАналогично моему ответу на C ++, но я опубликовал это, потому что в C. он несколько короче
источник
#import
является (устаревшим) расширением GCC. Подходит для игры в гольф, хотя.<stdio.h>
и автоматическое принятие глобальной переменнойint
как функции или возвращаемой функцииint
.Javascript
418377 байтСпасибо @Kritixi Lithos за помощь в выводе 39 байтов в гольф
Попробуйте онлайн
источник
repeat
, вы можете изменитьblah.repeat(val)
на,blah[w="repeat"](val)
а затем вы можете изменить последующие вхожденияrepeat
на просто[w](val)
вместо того, чтобы сохранять байты