Напечатайте башенный блок с кратчайшим кодом.
Входные данные:
Вход определяет, сколько этажей имеет башенный блок. Один этаж содержит окно с обеих сторон двери. Окно состоит из хэшей 3х3.
Пример 4-х этажного башенного блока ниже:
=====================
)V V V V V V V V V V(
)V V V V V V V V V V V(
)V V V V V V V V V V V V(
)V V V V V V V V V V V V V(
~~~~~~~~~~~~~~~~~~~~~~~~~~~
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : _______ : : : : :
: : ### : I I : ### : :
: : ### : I I : ### : :
: : ### : I I : ### : :
: : : : : I I : : : : :
Обновить:
Ввод должен быть один или больше.
Конечные пробелы в конце строк разрешены.
В моем примере каждая строка имеет три ведущих пробела. Это не обязательно, просто вышка с входом.
Ответы:
V , 72 байта
Попробуйте онлайн!
Вот hexdump, так как он содержит непечатаемые символы:
Я столкнулся со странной ошибкой. Раздел в середине:
dGÀpG
должен был быть:,ÀäGG
но это не работает для входов 1, и я понятия не имею, почему.¯\_(ツ)_/¯
источник
Mathematica,
301288258 байтЧистая функция, которая принимает положительное целое число и выводит строку. Выходная строка не будет выглядеть правильно, потому что Mathematica явно не отображает моноширинные шрифты как моноширинные:
По причинам, которые я не совсем понимаю, он форматируется как моноширинный, если вы
Print
строку:Изменить: Сохранение нескольких байтов, не включая
" "
в начале каждой строки. Изменено определениеs
для обработки случая, когда есть только один этаж (StringRepeat
не любит повторять строку0
раз).Изменить 2: Благодаря LegionMammal978 и тот факт , что
StringJoin
этоListable
, это теперь непонятная кошмар вложенных списков , а также 30 байт короче.источник
a<>b<>...<>x
сa<>{b,...,x}
в некоторых частях.Python 2 ,
275270262246240236 байтСпасла пару с подсказкой от @ Flp.Tkc и изменив первый цикл for.
16 сохранено с дополнительной помощью от @ Flp.Tkc
Попробуйте онлайн!
Просто строит каждую строку башни как строку и добавляет ее в массив, который печатает массив в конце. Если кому-то понадобится полное объяснение, я неохотно дам, если смогу вспомнить, как это работает.
источник
PowerShell , 193 байта
Попробуйте онлайн!
(Я чувствую, что здесь или там еще может быть несколько байтов. Sub-190 кажется выполнимым.)
Первые три строки образуют крышу, используя умножение и конкатенацию строк, а также цикл,
3..0|%{...}
чтобы получить правильное число и наклонV
s.Следующая строка проходит от входа предварительно уменьшается
--$args[0]
до0
как цикл (предварительно декремент позволяет индексировать , используя!$_
вместо того , чтобы$_-eq1
экономить несколько байт позже). На каждой итерации цикла мы создаем кучу строк, устанавливаем переменные$b
и$a
по пути. Мы также используем псевдо-тройки,(... , ...)[...]
чтобы выбрать подходящие струны для середины, чтобы мы могли правильно определить дверной проем на первом этаже.Каждая строка остается отдельно в конвейере, и по умолчанию
Write-Output
вставляются новые строки между ними, поэтому мы получаем их бесплатно.источник
T-SQL,
378372353331325 байтGolfed:
Ungolfed:
Попробуйте это
источник
C
409406402 байтаЗвоните с:
источник
Пакетный, 373 байта
Строит гребень и желоб, замечая, что они кратны 3, что сбрасывает несколько байтов. Строит крышу, замечая, что суффикс является одинаковым для каждой строки (и снова включает в себя несколько тройных повторений). Строит стены, начиная с самой интересной линии стены, которая является окном первого этажа, и удаляя детали, чтобы создать другие части стены.
источник
Javascript, 335 байт
Создает функцию
y()
с аргументомz
, котораяy(z)
производит желаемый результат.Пример использования:
Я перехожу с обычного JavaScript на код-гольф JS. Любые советы будут с благодарностью.
источник
Холст ,
6261 байтПопробуй это здесь! Вход 0 работает как положено, хотя это и не обязательно.
источник