Zrób mi pizzę

17

Ponieważ jest sobota (UTC) i jestem głodny, chciałbym kawałek pizzy. Dam ci zamówienie i chciałbym pyszną, gorącą pizzę . Do wyzwania?

Drive-Thru

Złożę moje zamówienie, gdziekolwiek jest twój drive-thru, niezależnie od tego, czy jest to STDIN, parametr funkcji, argument wiersza poleceń, ale nie zamierzam umieszczać go w zmiennej dla ciebie. (Wyrażenia funkcji JS muszą być przypisane do zmiennej).

Kolejność

Moje zamówienie będzie miało 2 części. Pierwsza będzie dodatnią, niezerową liczbą całkowitą od 3do 6. To jest rozmiar mojej pizzy. Na przykład 6pizza wielkości bez dodatków wyglądałaby następująco:

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

Rozmiar 5:

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

Rozmiar 4:

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

Rozmiar 3

 /==\
|    |
 \==/

Polewy

Moje dodatki będą ciągiem wielkich liter. Oto możliwe wartości:

P - Pepperoni
S - Kiełbasa
N - piNeapple
J - Jalapenos
B - Papryki bananowe
C - baCon

Musisz gdzieś je dopasować do pizzy. Jeśli zamówię rozmiar 4 PSPCJ, a następnie jest to prawidłowy wynik:

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

Tak to wygląda:

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

I to:

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

Nie jestem wybredna, jeśli chodzi o to, gdzie moje dodatki są na pizzy, o ile nie są na skórce ani na sobie.

Okno odbioru

Pójdę do wielu miejsc, aby odebrać moją pizzę, w tym STDOUT, plik, wartość zwracaną przez funkcję, ale nie zmienną.

Dodatkowe rzeczy

  • Standardowe luki zabronione
  • Jest to oznaczone więc wygrywa najkrótsza odpowiedź w bajtach!
  • Nie martw się o nieprawidłowe dane wejściowe (polewy> miejsce na pizzę itp.)
  • Zobacz moją odpowiedź (JS ES6) poniżej jako przykład (mam nadzieję, że możesz to zrobić lepiej)
programmer5000
źródło
3
Umm, więc możesz też odebrać pizzę na przejeździe?
Matthew Roh
1
Czy jesteś wybredny, kiedy wypełniam prawy górny i prawy dolny róg pudełka po pizzy spacjami? ;)
DLosc
1
@DLosc nie, wszelkie końcowe białe znaki na końcu dowolnego wiersza (w tym końcowy nowy wiersz na końcu danych wyjściowych) są opcjonalne, ale nie są wymagane.
programator5000
1
Czy Pizza mieć więcej niż jeden dla jednej z nadzieniem ̶ więc jeśli lubisz ananas: ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ jest również ważna wejściowych ̶ (lub powinien to być ̶ ̶5̶,̶ ̶N̶̶ zamiast) ̶ ̶ Ponadto, gdzie są grzyby ..? :( EDYCJA: Nieważne o pierwszym pytaniu, widzę, że twoje przypadki testowe mają 2x P.
Kevin Cruijssen
Czy mogę wysłać orderup linku? xD
FantaC

Odpowiedzi:

1

Pip , 87 81 75 bajtów

74 bajty kodu, +1 dla -lflagi.

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

Pobiera dane wejściowe jako argumenty wiersza polecenia. Wypróbuj online!

Podejście

eto górny rząd, taki jak /=====\. Jeśli go odwrócisz, będzie to również dolny wiersz.

yjest lewą granicą, na przykład ["/" "|" "|" "\"]. Jeśli go odwrócisz, będzie to również prawy brzeg.

Następnie konstruujemy środek, biorąc bpolewy, wypełniając je spacjami na długość (a+1)*(a-2)(gdzie ajest rozmiar) i grupując je w listę wierszy.

Na koniec drukujemy górny wiersz ze spacją wiodącą; połączyć środek pomiędzyy lewą i RVyprawą stroną i wydrukuj ją; i wydrukuj dolny wiersz ze spacją wiodącą.

DLosc
źródło
Czy to działa z pizzą serową (bez dodatków)?
programator5000
@ programmer5000 Tak - w takim przypadku drugi argument cmdline powinien być pustym ciągiem (jeśli uruchamiasz go z rzeczywistego wiersza poleceń, musisz go zacytować).
DLosc
5

Python 2 , 202,198,190,177,162,157, 146 bajtów

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]

Wypróbuj online!

Keerthana Prabhakaran
źródło
Hej, można przypisać '\\', '|”, a '/do zmiennych do golfa od kilku bajtów? W ten sposób bardzo ogoliłem się z odpowiedzi JS.
programator5000
Właśnie nad tym pracuję !!!!
Keerthana Prabhakaran
1
Ponadto, można wymienić pierwsze (n-1)z (--n), że n>4sz n>3, (n+1)z (n+2), a ostateczna (n-1)z nogolił 4 bajty?
programista
2
python nie obsługuje --operatora!
Keerthana Prabhakaran
136 bajtów
FlipTack,
2

Python 3 , 224 213 195 bajtów

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)

Wypróbuj online!

ovs
źródło
1

JavaScript (ES6), 170 161 bajtów

(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)

Zaczyna się od zniekształconej pizzy o szerokości 2 i wysokości 5 i rozciąga ją poziomo i dostosowuje odpowiednio do pionu, a następnie zastępuje wnętrze dodatkami lub spacjami po ich wyczerpaniu.

Neil
źródło
0

JS (ES6), 257 255 249 248 246 244 bajtów

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))

Nazwij to jak m(4)("PS")1 pepperoni i 1 kiełbasę. Prawdopodobnie można grać w golfa więcej.

programmer5000
źródło
1
Jezu, daj innym ludziom czas na odpowiedź: P
Pavel
1
@ Григорий Перельман Chciałem tylko podać przykład, mam nadzieję, że to nie wygra.
programista
0

Węgiel drzewny , 37 bajtów

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

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

Nθ

Podaj rozmiar pizzy.

 /==

Zacznij drukować górę pizzy.

×=⸿/›θ⁴

Jeśli pizza ma jeden z większych rozmiarów, dodaj więcej na górze i na boku.

⸿|

Wydrukuj więcej boku pizzy.

‖BO↓﹪θ²

Uzupełnij lewą połowę pizzy poprzez odbicie z możliwym zachodzeniem na siebie.

‖BO⊕﹪θ²

Uzupełnij pizzę odbiciem ze zmiennym zachodzeniem na siebie.

J¹¦¹⪪S⊕θ

Wprowadź dodatki i podziel je na kawałki, aby zmieściły się w pizzy.

Neil
źródło