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

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) ниже для примера (я надеюсь, что вы можете сделать лучше)
programmer5000
источник
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справа и напечатать это; и напечатайте нижний ряд с пробелом.

DLosc
источник
Это работает с пиццей с сыром (без начинки)?
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 не поддерживает --оператор!
Киртана Прабхакаран
136 байт
FlipTack
2

Python 3 , 224 213 195 байт

n,t=eval(input())
k=n+1
y=print
i=0
f,s,e,b,p="/ =\\|"
t+=s*99
y(s+f+e*~-n+b)
if n>4:y(f+t[:k]+b);i+=k
y(p+t[i:i+k]+p);i+=k
if~-n%2:y(p+t[i:i+k]+p);i+=k
if n>4:y(b+t[i:i+k]+f);i+=k
y(s+b+e*~-n+f)

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

овс
источник
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 колбасы. Вероятно, можно играть в гольф больше.

programmer5000
источник
1
Боже, дай другим людям время ответить: P
Павел
1
@ Григорий Перельман Я просто хотел привести пример, надеюсь, это не победит.
programmer5000
0

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

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

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

Nθ

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

 /==

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

×=⸿/›θ⁴

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

⸿|

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

‖BO↓﹪θ²

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

‖BO⊕﹪θ²

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

J¹¦¹⪪S⊕θ

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

Нил
источник