Сегодня мы собираемся построить пирамиду из букв! Вот пример буквенной пирамиды для первых 5 букв:
Напишите первые 5 букв с пробелом между ними, сначала по возрастанию, а затем по убыванию.
A B C D E D C B A
Сделайте то же самое для первых четырех букв в строке выше, но с двумя дополнительными пробелами:
A B C D C B A A B C D E D C B A
Повторите тот же шаг, пока последняя строка не будет просто "A"
A A B A A B C B A A B C D C B A A B C D E D C B A
Повторите шаги два и три, спускаясь вниз вместо того, чтобы идти вверх:
A A B A A B C B A A B C D C B A A B C D E D C B A A B C D C B A A B C B A A B A A
Этот же шаблон может быть расширен до 26 символов. Ваша задача - написать программу или функцию, которая принимает целое число в качестве входных данных и создает соответствующую буквенную пирамиду. Вы можете использовать заглавные или строчные буквы. Вы всегда можете предположить, что входные данные будут целочисленными [1, 26]
, а выходные данные могут быть любым приемлемым форматом для 2-й строки. Например, строка с новыми строками в нем, массив символов, печать в файл и т. Д. Каждая строка может содержать завершающие пробелы, и вы можете при желании вывести одну завершающую новую строку.
Вот несколько примеров входов / выходов:
1:
A
2:
A
A B A
A
3:
A
A B A
A B C B A
A B A
A
5:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
13:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
26:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
Как всегда, это код-гольф, поэтому применяются стандартные лазейки и выигрывает самый короткий ответ в байтах!
Ответы:
Python,
184 174169 байтРедактировать: 5 байтов сэкономлено благодаря @ nedla2004
источник
g
на три строки. 2.) Назначитьrange
переменной. Вы можете увидеть оба из них здесь . (Примечание: передdef f(x,y,z):
пробелом, передfor
циклом есть вкладка.range
с, которые вы можете заменить?R((a-i))
вR(a-i)
иR((a-i-1))
вR(a-i-1)
, не так ли?for
циклами внутри понимания списка.print
.05AB1E , 13 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
MATL ,
2524 байтаПопробуйте онлайн!
Более длинные альтернативы:
1Y20hiZv&+G-t0>*1&!t0*hTe)
(26 байт)Zv&+64+G-t64>*l2&Y"tZyP:o*c
(27 байт)объяснение
источник
V , 45 байтов
Попробуйте онлайн!
Это оказалось намного меньше, чем я надеялся, поэтому я пока не собираюсь публиковать объяснения. Надеюсь, я смогу еще немного уменьшить это. Как обычно, здесь есть hexdump:
источник
J, 34 байта
Принимает число в качестве ввода и возвращает двумерный массив символов.
объяснение
Разложенный контрольный пример
Давайте попробуем это с вводом
5
.Контрольные примеры
источник
Желе , 13 байт
TryItOnline!
Как?
источник
Пайк, 12 байт
Попробуй это здесь!
Отключить предупреждения для указанного вывода
источник
C #,
266263262261245238235232 байтаGolfed:
Разоблаченный с комментариями:
Попробуйте это: http://rextester.com/WIL67940
Возвращает список строк. Каждая строка содержит одну выходную строку.
Я сделал это для удовольствия и обучения. Я понимаю, что выиграть любой код-гольф с C # вне диапазона.
EDIT1: изменена интерполяция строки на
+
оператор.EDIT2:
c <= 'A' + i
=>c < 'B' + i
EDIT3: поменялся местами
char
сvar
.EDIT4: изменен тип возвращаемого значения с
void
наList
.EDIT5: удаление ненужной переменной.
EDIT6: Новый способ разделения половинок линии.
EDIT7: @Kaspar Kjeldsen, спасибо.
источник
C
124123 байтаЭкономия 1 байта благодаря Мукулу Кумару
В настоящее время я не могу заставить мою голову превратить двойной цикл в один, на данный момент оставлю это так.На самом деле, это большеТак что я просто позволил вложенному циклу.
Использует норму Манхэттена, чтобы получить форму ромба.
Ungolfed:
источник
j==2*n
сj-2*n
и обмениваясь? ()
значения с:()
значениемPython,
158154140139 байтЭто мой первый пост, так что будьте нежнее! Я интенсивно использовал [:: - 1] для обращения строк, так что, может быть, там есть какая-то оптимизация. Комментарии приветствуются.
правок:
Спасибо @Rod за указатель на полезную ссылку на тему гольфа с кодом Python, а также за напоминание о том, что буквы должны быть между ними. Также спасибо @wec за общие советы по удалению пробелов.
источник
=
), после запятых и перед открывающей скобкой в операторе печати. Отступы Python могут быть любого уровня, если они согласованы, поэтому вы можете сохранить 3 символа, независимо от выражения print только один пробел вместо четырех. Это легкая экономия, которую я вижу.z
только один раз, вам не нужно использовать переменную, просто поместитеs*2-1
непосредственно вcenter
функцию. Всего лишь одна деталь, вывод должен иметь пробелы между буквами,' '.join
сразу после печати должно быть достаточно (но вам нужно переделать,s*2-1
чтобы получить правильное значение).range
и для[:]
- это0
, так что вам не нужно указывать его явноBrain-Flak, 630 + 3 = 633 байта
Это требует
-A
флаг для запускаПопробуйте онлайн
Это не большой гольф, но в Brain-Flak этот вызов довольно сложный
источник
Pyth, 23 байта
Попробуйте онлайн
источник
TSQL, 261 байт
Запрос в одну строку - без циклов
К сожалению, скрипка пожирает пробелы в начале строк вывода. Пробелы будут там, если они будут выполнены в студии управления SQL Server.
скрипка
источник
Рубин,
137 115 10084 байтаСпасибо manatwork за комментарии.
источник
0..n-1
→0...n
.n>0?…:""
.Befunge 93 , 175 байт
Попробуйте онлайн!
Вероятно, не очень хорошо в гольф. Ну что ж. Это было достаточно сложно с befunge:
Удачи в выяснении, как это работает! Я едва знаю.
источник
C #, 199 байт
Как всегда, C # не очень похож на язык игры в гольф, но я предпочитаю «читаемый» код гораздо больше, чем эзотерический код. Также я просто сделал это для удовольствия :)
Вот версия без гольфа, так что вы можете легко понять, что я сделал:
(Я думаю, что это может быть оптимизировано, хотя ..)
источник
Java, 213 байт
Ungolfed:
источник
Java, 394 байта
Я обычно делаю C #, но хорошо бы все перепутать ...
Golfed:
Ungolfed:
Тестовое задание:
источник
R
1009787 байт(Обновление:
scan()
для ввода; злоупотребление (х-1): 1 == х: 2-1.)Не слишком потрепанный для одного из ключевых слов по внешнему виду (эти специальные символы всегда будут лучше).
источник
PHP,
122116 байтесть ли более короткий путь?
источник
JavaScript (ES6), 121 байт
Где
\n
представляет буквальный символ новой строки. Выходы в нижнем регистре.источник
Пакетный, 269 байт
Строка 2 заканчивается 25 пробелами; это означает, что когда индекс алфавита становится отрицательным, эти квадраты просто остаются пустыми.
источник