Введение
Это 2600 до н.э., и люди строят пирамиды сейчас. Они уже составили основу пирамиды, но не знают, как продолжить. Итак, они звали вас на помощь.
Правила изготовления пирамиды довольно просты. Для слоя выше предыдущего слоя все, что вам нужно сделать, это следовать этому пошаговому руководству:
Отрежьте края от предыдущего слоя.
Над
/
персонажем должен быть\
персонаж, и наоборот. Это относится к каждому символу, кроме краев.Крайний левый символ - всегда,
/
а самый правый - всегда\
.
Давайте возьмем пример основы для пирамиды:
//\/\/\\
Отрезаем края, оставляя:
/\/\/\
Мы меняем прямую и обратную косую черту и наоборот:
\/\/\/
Крайний левый символ - всегда, /
а самый правый - всегда \
, поэтому мы изменим это:
//\/\\
Мы размещаем этот слой на предыдущем слое:
//\/\\
//\/\/\\
Продолжаем до тех пор, пока не будет достигнута вершина (похоже /\
). Итак, в итоге мы получаем:
/\
//\\
//\/\\
//\/\/\\
Это то, что вам нужно для вывода.
Задание
Учитывая основание пирамиды (длиной более 3), выведите полную пирамиду. Вы можете смело предположить, что самый левый символ/
а самый правый символ - это \
. Также можно предположить, что длина основания всегда четна . Использование пробелов разрешено. Также допускается использование начальных пробелов , пока пирамида остается на месте. Разрешается использовать 1 трейлинг и 1 ведущий перевод строки.
Контрольные примеры
Input: /\\\
Output:
/\
/\\\
Input: //\\///\/\
Output:
/\
/\\\
/\///\
///\\\/\
//\\///\/\
Input: /////////////\
Output:
/\
/\\\
/////\
/\\\\\\\
/////////\
/\\\\\\\\\\\
/////////////\
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
Ответы:
Желе ,
28 26 2524 байта-4 байта благодаря Денису
Рецепт:
(подавать с лимонадом, эти пирамиды делают для жаждущих работников)
Приготовьте свою собственную пирамиду-косую черту в TryItOnline или попробуйте все рекомендуемые дегустаторы ОП.
источник
Retina ,
59565452 байтаПопробуйте онлайн!
Образец вывода
источник
Pyth -
2726 байтСокращается на операцию, заданную в OP, до тех пор, пока она не повторится, что имеет место для пустой строки.
Тестовый пакет .
источник
Python 2, 78 байт
Рекурсивная функция, которая выводит строку. Каждый слой пирамиды добавляется к рекурсивному вызову со слоем над ним. Префикс
p
, который начинается как символ новой строки, получает еще один пробел, чтобы сделать треугольник. Следующий слой создается путем замены косых черт, обрезания первых и последних двух символов и размещения их внутри левой и правой косой черты.Python 3 может сохранить байт, выполнив
*99
командуtranslate
, так как требование длины 256 было отброшено.источник
Haskell,
98949085 байтПример использования (примечание: в Haskell обратные косые черты внутри литеральных строк должны быть экранированы
\\
):Простой рекурсивный подход:
#
выполняет работу путем отображенияs
, которое переворачивает/
и\
, на внутренние элементы. Дополнительный параметрt
отслеживает уровень отступа и расширяется пробелом при каждом рекурсивном вызове.Примечание: второй рекурсивный вызов
#
(->l#""
) переходит непосредственно к базовому случаю и только короткий путь , чтобы добавитьl
,\
и символ новой строки, т.е. он заменяет++l++"\\\n"
.Редактировать: @xnor сохранил 5 байтов. Благодарность!
источник
l++"\\\n"
выглядит какl#""
.s
есть[c|x<-s,c<-"ab",c/=x]
.++"\\\n"
, но пропустил это. Благодарность!Python 3,
108 104 101 94 91 8988 байт-7 байтов благодаря xnor (сообщая, что нам не нужно печатать!)
-3 байта благодаря xnor (принимая объявление вне объявления функции [d'oh])
-1 байт благодаря Деннису (замените
f,b='/\\'
наb,f='\/'
)Проверьте это на ideone . Примечание: ввод скорректирован для двойной обратной косой черты (даже необработанные строки не будут работать, если они заканчиваются нечетным числом обратной косой черты).
источник
f,b='/\\'
вне функции.JavaScript (ES6),
9186 байтВывод включает в себя ведущий символ новой строки.
источник
Рубин, 80 байтов
Ungolfed
Посмотри на ideone: http://ideone.com/HN0l0Y
источник
f
в телеПакет, 137 байт
Удобно мое использование
%~2
и%1
означает, что я избегаю тратить байты наsetlocal
. Объяснение: Поскольку Batch не будет выполнять замены пустой строки, мы должны установить следующий слой с «неправильными» ребрами, которые затем будут исправлены как часть замены строки.источник
BASH (sed + sort)
7166 байтвход поступает от стандартного ввода.
Пример:
Объяснение:
-n
- подавить автоматическую печать:l
- иtl
вернуться к началу, если эта строка была чем-то иным,/\
p
- напечатать эту строкуy|\\/|1\\|;y|1|/|
- заменить\
на1
,/
с\
, а затем1
с/
th;:h
- test и перейти в то же место, чтобы проверялась только следующая замена позжеs|\\.(.*)./| /\1\\|
- замените две внешние косые черты с каждой стороны на{space}/
и\
sort
-space
до,/
так что все будет в порядкеисточник
05AB1E,
423836 байтПопробуйте онлайн!
Объяснение:
(Спасибо Эмигне за указание на это
DD -> Ð
иDR -> Â
).источник
Dg;GDðK¦¦¨¨„/\‡'\«R'/«ðN׫R}r»
экономит 7 байт.Go,
300276 байтДлинная версия:
источник
import(."regexp";."os")
сохраняет 2 байтаPerl,
5352 байтаВключает +1 для
-p
Запустите с вводом на STDIN, например,
pyramid.pl
:источник
05AB1E , 31 байт
объяснение
Попробуйте онлайн
источник
> <> ,
186179175171 байтоооооооо, это определенно мой самый большой ответ.
Там, вероятно, еще предстоит поиграть в гольф (нижняя часть довольно расточительна)
Попробуйте онлайн
источник
Powershell, 142 байта
источник
C #, 250 байт
Определенно можно играть в гольф дальше, но мой мозг умер, поэтому я решил оставить все как есть на данный момент.
источник