В уже удаленном вопросе stackoverflow кто-то опубликовал следующее:
Напишите программу или функцию для печати чередующихся шаблонов *и #на основе заданного целого числа n. Несколько примеров:
Вход: n=1
Выход:
*
Входной n=5
Выход:
*####
###**
***##
###**
*####
Вход: n=8
Выход:
*#######
######**
***#####
####****
****####
#####***
**######
#######*
Так как это выглядело довольно крутой задачей для игры в гольф, вот оно.
Как строятся эти шаблоны?
Первая строка начинается с единственного *, сопровождаемого n-1количеством трейлинга #.
Вторая строка содержит две *, с n-2количеством ведущих #.
Третья строка начинается с трех *, за которыми следует n-3количество трейлингов #.
и т.п.
Как только мы достигли середины ( n/2), мы производим обратный отсчет с количеством *, которое можно увидеть в приведенных выше примерах.
ОБРАТИТЕ ВНИМАНИЕ, что для нечетных входных чисел обратная пара строк (первая и последняя; вторая и следующая за последней; и т. Д.) Абсолютно одинакова. В n=5примере первые и последние строки являются *####; вторая и следующая за последней строки ###**.
Однако для четных входных чисел обратная пара линий перевернута. В n=8примере первая и последняя строки - это *#######и #######*; вторая и следующая за последней строки являются ######**и **######; и т.п.
Правила вызова:
- Вы можете использовать любые два различных печатаемых символа вместо
*и#. Вы можете использоватьAиB;3и7;<и>; и т.д. Пожалуйста, укажите в ваших ответах, что вы использовали. - Вы можете предположить,
nчто будет положительным целым числом (>= 1) - Вам разрешено выводить список / массив строк для каждой строки или двумерную матрицу символов вместо печати их в STDOUT.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Контрольные примеры (сначала n=1через n=10)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*