Сделай мне пиццу


17

Поскольку сейчас суббота (UTC), и я голоден, я хотел бы кусок пиццы. Я дам вам заказ, и я хотел бы хорошую горячую пиццу . До вызова?

Drive-Thru

Я размещу свой заказ, где бы вы ни находились, будь то STDIN, параметр функции, аргумент командной строки, но я не собираюсь помещать его в переменную для вас. (Выражения функции JS должны быть назначены переменной.)

Приказ

Мой заказ будет состоять из 2 частей. Первым будет положительное, ненулевое целое число от 3до 6. Это размер моей пиццы. Например, размер 6пиццы без начинки будет выглядеть так:

 /=====\
/       \
|       |
|       |
\       /
 \=====/

Размер 5:

 /====\
/      \
|      |
\      /
 \====/

Размер 4:

 /===\
|     |
|     |
 \===/

Размер 3

 /==\
|    |
 \==/

Начинки

Мои начинки будут цепочкой букв в верхнем регистре. Вот возможные значения:

П - Пепперони
S - Колбаса
N - piNeapple
J - Халапеньо
B - Банановый перец
C - baCon

Вы должны поместить их в пиццу где-нибудь. Если я закажу размер 4 и PSPCJ, то это правильный вывод:

 /===\
|PSPCJ|
|     |
 \===/

Так что это:

 /===\
|P P J|
| S C |
 \===/

И это:

 /===\
|     |
|PSPCJ|
 \===/

Я не очень разборчив в том, где мои начинки на пицце, если они не на корочке или друг на друге.

Окно подбора

Я пойду во многие места, чтобы забрать мою пиццу, включая STDOUT, файл, возвращаемое значение функции, но не переменную.

Дополнительные вещи

  • Стандартные лазейки запрещены
  • Это помечено поэтому выигрывает самый короткий ответ в байтах!
  • Не беспокойтесь о неправильном вводе (начинки> место для пиццы и т. Д.)
  • См. Мой ответ (JS ES6) ниже для примера (я надеюсь, что вы можете сделать лучше)

3
Хм, так ты тоже можешь забрать свою пиццу на Drive-thru?
Мэтью Ро

1
Вы требовательны ко мне, заполняя верхний правый и нижний правый углы коробки для пиццы пробелами? ;)
DLosc

1
@DLosc нет, любые конечные пробелы в конце любой строки (включая завершающий символ новой строки в конце выходных данных) необязательны, но не обязательны.
programmer5000

1
МОЖЕТ пиццу иметь более одного для одного из Начинка ̶ Так если вы любите Ананас: ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ есть правильный ввод данные ̶ (или его следует ̶ ̶5̶,̶ ̶N̶̶ , а) ̶ ̶ Кроме того , где грибы ..? :( РЕДАКТИРОВАТЬ: P
Не

Могу ли я опубликовать ссылку для заказа ? xD
FantaC

Ответы:


1

Пип , 87 81 75 байт

74 байта кода, +1 для -lфлага.

e:'/.'=Xa-1.'\Y['/'\]Xa//5J'|X2-a%2^xPs.ePy.(b.sXa*a-a-2-#b<>a+1).RVys.RVe

Принимает ввод в качестве аргументов командной строки. Попробуйте онлайн!

Подходить

eэто верхний ряд, например /=====\. Если вы измените его, это также нижний ряд.

yэто левая граница, такая как ["/" "|" "|" "\"]. Если вы измените его, это также правильная граница.

Затем мы создаем середину, беря b, начинки, дополняя его пробелами по длине (a+1)*(a-2)(где aразмер), и группируя его в список строк.

Наконец, мы печатаем верхний ряд с пробелом; соединить середину yслева и RVyсправа и напечатать это; и напечатайте нижний ряд с пробелом.


Это работает с пиццей с сыром (без начинки)?
programmer5000

@ programmer5000 Да - в этом случае второй аргумент cmdline должен быть пустой строкой (если вы запускаете его из реальной командной строки, вам придется заключить его в кавычки).
DLosc

5

Python 2 , 202,198,190,177,162,157, 146 байтов

n,t=input()
y=n+1
s=' '
l=' /'+'='*(n-1)+'\\ '+('','\n/'+s*y+'\\')[n>4]+'\n|'
print l+t[:y].center(y,s)+('','|\n|'+t[y:].center(y,s))[y%2]+l[::-1]

Попробуйте онлайн!


Эй, вы можете назначить '\\', '|», и '/к переменному гольфу от нескольких байт? Вот так я сильно сбрил свой ответ JS.
programmer5000

Я просто работаю над этим !!!!
Киртана Прабхакаран

1
Кроме того, вы можете заменить первое (n-1)с (--n), n>4s с n>3, (n+1)с (n+2), и финальное (n-1)с, nчтобы сбрить 4 байта?
programmer5000

2
Python не поддерживает --оператор!
Киртана Прабхакаран



1

JavaScript (ES6), 170 161 байт

(n,t,a=[1,,n%2||2,,1])=>` /=\\
/___\\
|___|
\\___/
 \\=/`[r=`replace`](/.+/g,s=>s.repeat(a.pop()||n>4))[r](/=|_\b/g,`$&`.repeat(n-1))[r](/_/g,_=>t[i++]||` `,i=0)

Начинаем с того, что вынимаем деформированную пиццу шириной 2 и высотой 5, растягиваем ее по горизонтали и, при необходимости, корректируем по вертикали, затем заменяем внутреннюю часть начинок или пробелов, когда они заканчиваются.


0

JS (ES6), 257 255 249 248 246 244 байта

m=s=>t=>(r="/",k="\\",p=" ",f="\n",x="|",c=f+x,q="",t=p+t,z=(s>2?p:q)+r+"=".repeat(s-1)+k+(s>4?f+r+p.repeat(++s)+k:q)+c+p.repeat(s)+x+(!s?c+p.repeat(s)+x:q)+p+(s>5?f+k+p.repeat(s)+r:q)+f+p+k+"=".repeat(s-2)+r,i=-1,z.replace(/ /g, x=>t[++i]||p))

Назовите это как m(4)("PS")для 1 пепперони и 1 колбасы. Вероятно, можно играть в гольф больше.


1
Боже, дай другим людям время ответить: P
Павел

1
@ Григорий Перельман Я просто хотел привести пример, надеюсь, это не победит.
programmer5000

0

Древесный уголь , 37 байт

Nθ /==×=⸿/›θ⁴⸿|‖BO↓﹪θ²‖BO⊕﹪θ²J¹¦¹⪪S⊕θ

Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:

Nθ

Введите размер пиццы.

 /==

Начните печатать верх пиццы.

×=⸿/›θ⁴

Если пицца одного из больших размеров, добавьте дополнительно сверху и сбоку.

⸿|

Напечатайте больше стороны пиццы.

‖BO↓﹪θ²

Завершите левую половину пиццы отражением с возможным перекрытием.

‖BO⊕﹪θ²

Завершите пиццу отражением с переменным перекрытием.

J¹¦¹⪪S⊕θ

Введите начинки и разделите их на кусочки, чтобы они поместились внутри пиццы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.