Напишите программу или функцию, которая рисует горный хребет, где каждая последующая большая горная вершина находится «позади» впереди, и чередует, какая сторона видна.
Это горный массив размера 1
/\
Это горный массив размера 2
/\
/\ \
Это горный массив размера 3
/\
/ /\
/ /\ \
Это горный массив размера 4
/\
/\ \
/ /\ \
/ /\ \ \
Это горный массив размера 5
/\
/ /\
/ /\ \
/ / /\ \
/ / /\ \ \
И так далее.
вход
Один положительное целое число в любом удобном формате , n > 0
.
Выход
ASCII-арт-представление горного хребта, следуя приведенным выше правилам. Начальные / конечные новые строки или другие пробелы являются необязательными, при условии, что пики выстраиваются соответствующим образом.
правила
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
JavaScript (ES6), 75 байт
Полная программа в настоящее время немного короче рекурсивной функции:
источник
Python 2, 67 байт
Печатает построчно, накапливая строку
s
, поочередно добавляя косую черту влево или вправо в зависимости от текущей четностиn
. Префиксы сn
пробелами.Альтернативный способ обновления был такой же длины:
Рекурсивный метод был длиннее (70 байт).
источник
Haskell, 77 байт
Использование:
Печатает построчно, накапливая строку s, попеременно добавляя косую черту влево или вправо в зависимости от текущей четности n. Префиксы с n-1 пробелами.
источник
Пакетный, 202 байта
Принимает ввод в качестве параметра командной строки. Не удается выполнить последний цикл.
источник
Рубин, 61 байт
Довольно простой порт ответа ETHproductions на JavaScript .
Смотрите его на repl.it: https://repl.it/EPU5/1
Ungolfed
источник
Haskell,
117 107 105 9790 байтПопробуйте это на Ideone. Изменить: Сохранено 8 байтов с идеей от Нила.
Безголовая версия:
Рекурсивный подход. Форма для
n
генерируется путем добавления пробела перед каждой строкойn-1
формы и взятия последней строкиn-1
и добавления"/ "
перед, еслиn
нечетное, или" \"
после, еслиn
четное ... или так я думал, прежде чем заметить, что этот последний шаг обращен для все рекурсивные шаги, когда финалn
нечетный. Поэтомуb
передается флаг, который чередует каждый рекурсивный вызов и определяет, будет ли следующая горная часть добавлена влево или вправо.источник
b
сodd n
каждым разом, вы не можете просто передать флаг в начале и перевернуть его при каждом рекурсивном вызове? Нечто подобноеf n = unlines(p 0 n)
иlet m = p (1-b) (n-1)
.-b
еще один символ выключен.b
быть0
или1
.Java 7,130 байт
Ungolfed
источник
n%2
доn--%2
и как--n
кn
. EDIT: А 1 больше , путем добавления,x=s+"\n"
и изменения какs+"\n"
вx
. (Итого:String f(int n,String s){String l="",x=s+"\n";for(int i=1;i++<n;l+=" ");return n>1?n--%2<1?l+x+f(n,s+" \\"):l+x+f(n,"/ "+s):s;}
127 байт )C ++ 138 (функция)
Функция: -
Полная программа: -
ПРИМЕЧАНИЕ: функция
_getch()
может иметь разные имена прототипов в разных компиляторах.источник