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 art ascii . À 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 6
pizza 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 code-golf, 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)
̶5̶,̶ ̶N̶N̶N̶
̶ VALIDE est également ̶ INPut (Doit - on au ̶̶5̶,̶ ̶N̶
̶ INSTEAD) ̶ ̶ En outre, où sont les champignons ..? :( EDIT:P
Réponses:
Pip ,
878175 octets74 octets de code, +1 pour
-l
indicateur.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
b
les 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
y
la gauche etRVy
la droite et l'imprimer; et imprimez la ligne du bas avec un espace au début.la source
Python 2 ,
202, 198, 190, 177,162 ,157,146 octetsEssayez-le en ligne!
la source
'\\'
,'|
'et'/
à des variables pour jouer sur quelques octets? C'est comme ça que j'ai beaucoup rasé ma réponse JS.(n-1)
par(--n)
, len>4
s parn>3
,(n+1)
avec(n+2)
et le final(n-1)
parn
pour raser 4 octets?--
opérateur!Python 3 ,
224213195 octetsEssayez-le en ligne!
la source
JavaScript (ES6),
170161 octetsCommence 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.
la source
JS (ES6),
257255249248246244 octetsAppelez-le comme
m(4)("PS")
pour 1 pepperoni et 1 saucisse. Peut probablement être joué au golf plus.la source
Fusain , 37 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
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.
Complétez la moitié gauche de la pizza par réflexion avec un éventuel chevauchement.
Complétez la pizza par réflexion avec un chevauchement variable.
Saisissez les garnitures et divisez-les en morceaux pour qu'elles tiennent à l'intérieur de la pizza.
la source