5 апреля - национальный день пиццы Deep DIsh, тема этого соревнования. Учитывая положительное целое число n
( n
больше 0), создайте пиццу с глубоким блюдом ASCII. Настоящая глубокая тарелка пиццы показана:
Как вы можете видеть, на дне есть слой корки, окружающий остальную часть пиццы.
Как сделать пиццу
Корка состоит из двух слоев. Первый слой будет n
высоким и n*3
длинным. Длина - это количество символов (включая пробелы) в верхней строке. Итак, учитывая n
1, первый слой будет выглядеть так:
\_/ 1 character tall
3 characters long
Если n
два:
\ / 2 characters tall
\__/
6 characters long
Теперь для второго слоя коры. Он выйдет за пределы первой внутренней корки, поэтому он будет иметь n+2
высоту (n*3)+6)
символов и длину символов. Дано n
одно:
\ / 3 characters tall
\ /
\___/
9 characters long (3 underscores, 3 slashes on either side)
Если n
два:
\ / 4 characters high
\ /
\ /
\____/
12 characters long
Затем вы должны сопоставить две самые высокие пары \/
друг с другом для внутренней и внешней коры. В n
том 1:
\ \ / /
\ \_/ /
\___/
Если все сделано правильно, это будет выглядеть как V без вершин с разницей в один символ между каждым слоем. Говоря о вершинах, кора будет объединена парой /\
, разделенной линией подчеркиваний, (n*3)+2
длинной, чтобы закончить корку и пиццу.
Примеры
Если n
1:
/\_____/\
\ \ / /
\ \_/ /
\___/
n
это 2:
/\________/\
\ \ / /
\ \ / /
\ \__/ /
\____/
n
это 3:
/\___________/\
\ \ / /
\ \ / /
\ \ / /
\ \___/ /
\_____/
Критерий победы
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
-
вместо_
?Ответы:
Древесный уголь , 35 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Введите размер пиццы.
Распечатать часть внешней основы коры.
Напечатайте внешнюю корку левой стороны.
Распечатать часть верхней корки.
Распечатать внутреннюю корку левой стороны.
Распечатать часть внутренней коры основания.
Подумайте, чтобы завершить пиццу.
Обратите внимание, что современные дополнения к Charcoal уменьшают размер до 31 байта:
Попробуйте онлайн! Ссылка на подробную версию кода.
источник
JavaScript (ES6), 136 байт
Вся пицца очень повторяющаяся, поэтому
r
функция (разработанная как помеченный шаблонный литерал) повторяет первый символ времени вводаn
. Это обрабатывает две верхние и нижние линии пиццы. Середина повторяется путем замены строки заготовок; то$`
и$'
subsitutions автоматически соответствуют увеличение и уменьшение числа заготовок , таким образом , позиционирование\ \
и/ /
надлежащим образом .источник
Python 2,
153151 байтПопробуйте онлайн
-2 байта путем замены повторяющихся значений переменными благодаря @KoishoreRoy
источник
print' '*=~n+'\\'+'_'*-~n+'_/'
вы можете не писатьprint' '*i+' \\_'+'_'*n+'_/'
? (Илиn
вместоi
, но я копировал предыдущую строку.)-~n
чтобыi
, потому что в этот моментi==n
. Но второе изменение это хорошо. Также я сократил-~n
, благодаря вашей идее-~n
наi
, потому что я добавлял пространство. (Но вы, кажется, все равноn
i
MATLAB, 333 байта
(Ленивая попытка)
отформатирован:
Основная идея заключается в том, что у меня есть функциональные маркеры для печати всего, а затем я просто использую это грубо. Цикл for предназначен для
n
слоев между самым верхом и низом внутреннего слоя. Повторение(пробелы) и
_
делается с помощьюarrayfun
, с массивом входов. Постараюсь придумать более интересные способы сделать это, если у меня будет больше времени позже.источник
Древесный уголь ,
5452 байтаОбъяснение:
Мой предыдущий ответ был на Retina, языке, на который я не публиковал ответ раньше. Теперь у вас есть ответ в древесном угле, на который я раньше не отвечал.
Попробуйте онлайн!
источник
PHP,
209 200 137135 байтовнаконец-то победил JS :)
Принимает участие от STDIN; запустить
-nR
или заказать семейную пиццу .сломать
источник
JavaScript (ES6), 205 байт
Это мой первый пост ascii-art !
Добавить
f=
в начале и вызвать какf(arg)
.Примечание: все разрывы строк необходимы!
объяснение
Код сначала объявляет массив
a
. Затем он объявляетw
иu
имеет значение пробела и подчеркивания соответственно. Затем он объявляет переменную String для хранения значения crust (которое может быть вычислено с помощью/\+(n*3+2 underscores)+/\
, как упомянуто в вызове). После этого, с помощьюfor
цикла и аTemplate Literal
, создается середина пиццы (при этом каждый слой имеетi
пробелы в начале и(n+1-i*2)+n+(n-1)
пробелы между\ \
и/ /
, гдеi
представляет индексfor
цикла). Наконец, создается самая нижняя часть пиццы ((i whitespaces)+\+(n+2 underscores)+/
). Все части соединяются вместе и выводятся (тэд).Если по какой-то причине фрагмент не отображает искусство ASCII правильно, посмотрите здесь .
Поздравляем всех с Днем пиццы Deep Dish!
источник
Пакетный, 200 байт
t
содержит левый отступ, в то время какs
содержит внутреннюю часть; его_
s заменяются пробелами в средних рядах.l
просто существует, чтобы избежать повторения.источник
V , 57 байтов
Попробуйте онлайн!
Так как (как обычно) это содержит много неприятных не-ASCII символов и непечатных символов, вот hexdump:
Я опубликую более подробное объяснение в ближайшее время, но вот обзор высокого уровня:
источник
C (лязг) ,
211215 байтПопробуйте онлайн!
Симпатичный код:
Редактирование:
источник
CJam, 74 байта
Путь слишком долго. Я собираюсь попробовать другой подход.
Строит строку построчно. Ничего слишком сумасшедшего.
источник
CJam, 89 байт
Ну, на самом деле это на самом деле дольше, чем мое другое решение на данный момент, но я думаю, что оно более пригодно для игры в гольф
Трассировки стека:
источник