Bana pizza yap


17

Cumartesi (UTC) olduğu için açım ve bir dilim pizza istiyorum. Size bir sipariş vereceğim ve güzel bir sıcak pizza istiyorum. Meydan okumaya kadar mı?

Arabaya Servis

Siparişimi, STDIN, bir fonksiyon parametresi, bir komut satırı argümanı olsun, nerede olursanız olun, ama sizin için bir değişkene koymayacağım. (JS işlev ifadeleri bir değişkene atanmalıdır.)

Emir

Siparişim 2 parçadan oluşacak. Birincisi, ile arasında pozitif, sıfır olmayan bir tam sayı 3olacaktır 6. Bu benim pizzamın büyüklüğü. Örneğin, 6Topingi olmayan bir boy pizza şöyle görünecektir:

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

Bir boyut 5:

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

Bir boyut 4:

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

Bir beden 3

 /==\
|    |
 \==/

Topingler

Topinglerim bir dizi YUKARI harf olacak. Olası değerler şunlardır:

P - Biberli
S - Sosis
N - piNeapple
J - Jalapenos
B - Muz biberi
C - baCon

Onları bir yere pizzaya sığdırmalısın. Ben bir boyut 4 sipariş ve PSPCJo zaman bu geçerli bir çıktı:

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

Öyleyse bu:

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

Ve bu:

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

Kabukta veya birbirinin üstünde olmadığı sürece, Topinglerim pizza nerede hakkında gerçekten seçici değilim.

Açma penceresi

STDOUT, bir dosya, bir fonksiyonun dönüş değeri, ancak bir değişken dahil olmak üzere pizzamı almak için birçok yere gideceğim.

Ekstra şeyler

  • Standart boşluklar yasaktır
  • Bu olarak etiketlenir, böylece bayttaki en kısa cevap kazanır!
  • Geçersiz girdi hakkında endişelenmeyin (Topingler> pizza alanı vb.)
  • Aşağıdaki örnekte cevabımı (JS ES6) görebilirsiniz (Umarım daha iyisini yapabilirsin)

3
Umm, Peki bir Drive-thru'da pizzanı da alabilir misin?
Matthew Roh

1
Pizza kutusunun sağ üst ve sağ alt köşelerini boşlukla doldurmam konusunda seçici misiniz? ;)
DLosc

1
@DLosc no, herhangi bir satırın sonundaki herhangi bir boşluk (çıktı sonunda bir son satır dahil) isteğe bağlıdır, ancak zorunlu değildir.
programmer5000

1
Can The Pizza kurduğum başka için bir tane The Topingler ̶ Eğer öyleyse senin gibi ananas: ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ ayrıca geçerli bir girdidir ̶ (veya bunlara Olması ̶ ̶5̶,̶ ̶N̶̶ yerine) ̶ ̶ Ayrıca, mantar nerede ..? :( DÜZENLEME: Boşver ilk soru hakkında, senin test durumları 2x etti bkz P.
Kevin Cruijssen

Bir sipariş bağlantısı gönderebilir miyim ? xD
FantaC

Yanıtlar:


1

Pip , 87 81 75 bayt

74 bayt kod, -lbayrak için +1 .

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

Girdiyi komut satırı bağımsız değişkenleri olarak alır. Çevrimiçi deneyin!

Yaklaşmak

egibi üst satırdır /=====\. Eğer tersine çevirirseniz, aynı zamanda en alt sıraya gelir.

ygibi sol kenarlık ["/" "|" "|" "\"]. Tersine çevirirseniz, aynı zamanda doğru sınırdır.

Daha sonra b, tepeleri alarak , uzunluğa kadar boşluklarla (a+1)*(a-2)( aboyutun nerede olduğu) doldurarak ve bir satır listesine gruplandırarak ortayı inşa ederiz .

Son olarak, en üst satırı bir boşluk bırakarak yazdırıyoruz; ysoldaki ve RVysağdaki ortaları birleştirin ve yazdırın; ve en alttaki satırı boşluk bırakarak yazdırın.


Bu peynir (Toping yok) pizza ile çalışır mı?
programmer5000

@ programmer5000 Evet - bu durumda ikinci cmdline argümanı boş bir dize olmalıdır (gerçek bir komut satırından çalıştırıyorsanız, alıntı yapmanız gerekir).
DLosc

5

Python 2 , 202.198.190.177.162.157, 146 bayt

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]

Çevrimiçi deneyin!


Hey, atayabilir '\\', '|' ve '/değişkenlere birkaç bayt kapalı golf? JS cevabımı bu şekilde çok traş ettim.
programmer5000

Ben sadece bunun üzerinde çalışıyorum !!!!
Keerthana Prabhakaran

1
Ayrıca, ilk yerini alabilecek (n-1)ile (--n), n>4ile lar n>3, (n+1)ile (n+2), ve son (n-1)ile n4 bayt kapalı tıraş için?
programmer5000

2
python --operatörü desteklemiyor !
Keerthana Prabhakaran


2

Python 3 , 224 213 195 bayt

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)

Çevrimiçi deneyin!


1

JavaScript (ES6), 170 161 bayt

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

Genişlik 2 ve yükseklik 5 şeklinde bir şekilsiz pizza alarak başlar ve yatay olarak uzatır ve uygun şekilde dikey olarak ayarlar, sonra iç bittikten sonra iç kısımları Topingler veya boşluklarla değiştirir.


0

JS (ES6), 257 255 249 248 246 244 bayt

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

Gibi diyelim m(4)("PS")1 acıkmak ve 1 sosis için. Muhtemelen daha fazla golf yapılabilir.


1
Tanrım, başkalarına cevap vermeleri için zaman
Pavel

1
@ Григорий Перельман Sadece bir örnek vermek istedim, umarım bu kazanmaz.
programmer5000

0

Kömür , 37 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Açıklama:

Nθ

Pizza boyutunu girin.

 /==

Pizzanın üst kısmını yazdırmaya başlayın.

×=⸿/›θ⁴

Pizza daha büyük boyutlardan biriyse, üst ve yan tarafa ekstra ekleyin.

⸿|

Pizzanın daha fazla tarafını yazdırın.

‖BO↓﹪θ²

Pizzanın sol yarısını olası çakışma ile yansıtarak tamamlayın.

‖BO⊕﹪θ²

Değişken çakışma ile pizzayı tamamlayın.

J¹¦¹⪪S⊕θ

Topingleri girin ve pizzanın içine sığacak şekilde parçalara ayırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.