Зробіть мені піцу


17

Оскільки субота (UTC), і я голодний, я хотів би скибочку піци. Я накажу вам, і мені хотілося б приємної гарячої піци . До виклику?

Привід-Thru

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

Замовити

У мого замовлення буде 2 частини. Першим буде додатне, ненульове ціле число від 3до 6. Це розмір моєї піци. Наприклад, 6піца розміром без начинки виглядатиме так:

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

Розмір 5:

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

Розмір 4:

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

Розмір 3

 /==\
|    |
 \==/

Начинки

Мої начинки будуть рядом літер ПОВНІШНЯ. Ось можливі значення:

П - Пеппероні
S - ковбаса
N - piNeapple
J - Джалапенос
В - банановий перець
C - бакон

Ви повинні десь помістити їх на піцу. Якщо я замовляю розмір 4 і PSPCJ, це правильний вихід:

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

Так це:

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

І це:

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

Я не дуже прискіпливий до того, де мої начинки знаходяться на піці, якщо вони не знаходяться на корі або один на одного.

Вікно вибору

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

Додатковий матеріал

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

3
Гм, так що ви також можете забрати піцу на Drive-thru?
Меттью Рох

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

1
@DLosc ні, будь-який пробільний пробіл в кінці будь-якого рядка (включаючи кінцевий новий рядок в кінці виводу) необов’язковий, але не обов'язковий.
програміст5000

1
МОЖЕ піцу мати більше одного для одного з Начинка ̶ Так якщо ви любите Ананас: ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ є правильне введення дані ̶ (або його слід ̶ ̶5̶,̶ ̶N̶̶ , а) ̶ ̶ Крім того , де гриби ..? :( EDIT: Не забудьте про перше запитання, я бачу, що у ваших тестових випадках є 2 рази P.
Кевін Круїйсен

Можу чи я розмістити orderup посилання? 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правою стороною та надрукуйте це; і надрукуйте нижній ряд із провідним пробілом.


Це працює з сирною (без начинки) піцею?
програміст5000

@ 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.
програміст5000

Я просто працюю над цим !!!!
Keerthana Prabhakaran

1
Крім того , ви можете замінити перший (n-1)з (--n), в n>4s з n>3, (n+1)з (n+2), а останній (n-1)з nзбрити 4 байта?
програміст5000

2
python не підтримує --оператора!
Keerthana Prabhakaran



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
Боже, дай час іншим людям відповісти: П
Павло

1
@ Григорий Перельман Я просто хотів навести приклад, сподіваюся, що це не виграє.
програміст5000

0

Вугілля деревне , 37 байт

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

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Пояснення:

Nθ

Введіть розмір піци.

 /==

Почніть друкувати верхню частину піци.

×=⸿/›θ⁴

Якщо піца має один з більших розмірів, додайте додатковий верх і збоку.

⸿|

Роздрукуйте більше бічної сторони піци.

‖BO↓﹪θ²

Ліву половину піци доповніть відображенням з можливим перекриттям.

‖BO⊕﹪θ²

Завершіть піцу за допомогою відображення зі змінним перекриттям.

J¹¦¹⪪S⊕θ

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.