Fais moi une pizza

17

Parce que c'est samedi (UTC) et j'ai faim, j'aimerais une tranche de pizza. Je vais vous donner une commande et je voudrais une bonne pizza chaude . À la hauteur du défi?

Le service au volant

Je passerai ma commande où que se trouve votre service au volant, que ce soit STDIN, un paramètre de fonction, un argument de ligne de commande, mais je ne vais pas le mettre dans une variable pour vous. (Les expressions de fonction JS doivent être affectées à une variable.)

L'ordre

Ma commande comprendra 2 parties. Le premier sera un entier positif non nul de 3à 6. C'est la taille de ma pizza. Par exemple, une 6pizza de taille sans garniture ressemblerait à:

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

Une taille 5:

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

Une taille 4:

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

Une taille 3

 /==\
|    |
 \==/

Les garnitures

Mes garnitures seront une chaîne de lettres MAJUSCULES. Voici les valeurs possibles:

P - Pepperoni
S - Saucisse
N - piNeapple
J - Jalapenos
B - Poivrons bananes
C - baCon

Vous devez les placer quelque part sur la pizza. Si je commande une taille 4 et PSPCJ, alors ceci est une sortie valide:

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

Voici donc:

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

Et ça:

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

Je ne suis pas vraiment pointilleux sur l'endroit où mes garnitures sont sur la pizza, tant qu'elles ne sont pas sur la croûte ou les unes sur les autres.

La fenêtre de ramassage

Je vais aller à beaucoup d'endroits pour récupérer ma pizza, y compris STDOUT, un fichier, la valeur de retour d'une fonction, mais pas une variable.

Des trucs supplémentaires

  • Failles standard interdites
  • Il s'agit du donc la réponse la plus courte en octets l'emporte!
  • Ne vous inquiétez pas des entrées invalides (garnitures> espace pizza, etc.)
  • Voir ma réponse (JS ES6) ci-dessous pour un exemple (j'espère que vous pouvez faire mieux)
programmer5000
la source
3
Umm, vous pouvez donc aussi prendre votre pizza sur un service au volant?
Matthew Roh
1
Êtes-vous pointilleux à mon sujet en remplissant les coins supérieurs droit et inférieur droit de la boîte à pizza avec des espaces? ;)
DLosc
1
@DLosc non, tout espace de fin à la fin de n'importe quelle ligne (y compris un saut de ligne à la fin de la sortie) est facultatif mais pas obligatoire.
programmer5000
1
Pizzerias -ce que les plus d'un à l' un des TOPPINGS ̶ et si vous aimez Pineapple: ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ VALIDE est également ̶ INPut (Doit - on au ̶ ̶5̶,̶ ̶N̶̶ INSTEAD) ̶ ̶ En outre, où sont les champignons ..? :( EDIT: P
Peu importe
Puis - je poster un orderup lien? xD
FantaC

Réponses:

1

Pip , 87 81 75 octets

74 octets de code, +1 pour -l indicateur.

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

Prend l'entrée comme arguments de ligne de commande. Essayez-le en ligne!

Approche

e est la ligne du haut, comme /=====\ . Si vous l'inverse, c'est aussi la rangée du bas.

y est la bordure gauche, comme ["/" "|" "|" "\"] . Si vous l'inverse, c'est aussi la bordure droite.

Nous construisons ensuite le milieu en prenant bles garnitures, en le rembourrant avec des espaces à la longueur (a+1)*(a-2)(oùa est la taille) et en les regroupant dans une liste de lignes.

Enfin, nous imprimons la ligne du haut avec un espace de tête; concaténer le milieu entre yla gauche et RVyla droite et l'imprimer; et imprimez la ligne du bas avec un espace au début.

DLosc
la source
Est-ce que cela fonctionne avec une pizza au fromage (sans garniture)?
programmer5000
@ programmer5000 Oui - dans ce cas, le deuxième argument cmdline doit être une chaîne vide (si vous l'exécutez à partir d'une ligne de commande réelle, vous devrez le citer).
DLosc
5

Python 2 , 202, 198, 190, 177, 162 , 157, 146 octets

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]

Essayez-le en ligne!

Keerthana Prabhakaran
la source
Hé, pouvez-vous attribuer '\\', '|'et '/à des variables pour jouer sur quelques octets? C'est comme ça que j'ai beaucoup rasé ma réponse JS.
programmer5000
Je travaille juste dessus !!!!
Keerthana Prabhakaran
1
De plus, pouvez-vous remplacer le premier (n-1)par (--n), le n>4s par n>3, (n+1)avec (n+2)et le final (n-1)par npour raser 4 octets?
programmer5000
2
python ne prend pas en charge l' --opérateur!
Keerthana Prabhakaran
136 octets
FlipTack
2

Python 3 , 224 213 195 octets

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)

Essayez-le en ligne!

ovs
la source
1

JavaScript (ES6), 170 161 octets

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

Commence par prendre une pizza déformée de largeur 2 et de hauteur 5 et l'étire horizontalement et l'ajuste verticalement selon les besoins, puis remplace l'intérieur par des garnitures ou des espaces une fois épuisés.

Neil
la source
0

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

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

Appelez-le comme m(4)("PS")pour 1 pepperoni et 1 saucisse. Peut probablement être joué au golf plus.

programmer5000
la source
1
Bon sang, donnez du temps à d'autres personnes pour répondre: P
Pavel
1
@ Григорий Перельман Je voulais juste donner un exemple, j'espère que cela ne gagnera pas.
programmer5000
0

Fusain , 37 octets

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

Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:

Nθ

Saisissez la taille de la pizza.

 /==

Commencez à imprimer le haut de la pizza.

×=⸿/›θ⁴

Si la pizza est de l'une des plus grandes tailles, ajoutez un supplément sur le dessus et le côté.

⸿|

Imprimez plus du côté de la pizza.

‖BO↓﹪θ²

Complétez la moitié gauche de la pizza par réflexion avec un éventuel chevauchement.

‖BO⊕﹪θ²

Complétez la pizza par réflexion avec un chevauchement variable.

J¹¦¹⪪S⊕θ

Saisissez les garnitures et divisez-les en morceaux pour qu'elles tiennent à l'intérieur de la pizza.

Neil
la source