Como é sábado (UTC) e estou com fome, gostaria de uma fatia de pizza. Vou fazer um pedido e eu gostaria de uma boa pizza quente de arte ascii . Até o desafio?
O drive-thru
Farei meu pedido onde quer que esteja o drive-thru, seja STDIN, um parâmetro de função, um argumento de linha de comando, mas não vou colocá-lo em uma variável para você. (As expressões de função JS devem ser atribuídas a uma variável.)
A ordem
Meu pedido terá 2 partes. O primeiro será um número inteiro positivo diferente de zero de 3
a 6
. Este é o tamanho da minha pizza. Por exemplo, uma 6
pizza de tamanho sem coberturas se pareceria com:
/=====\
/ \
| |
| |
\ /
\=====/
Um tamanho 5
:
/====\
/ \
| |
\ /
\====/
Um tamanho 4
:
/===\
| |
| |
\===/
Um tamanho 3
/==\
| |
\==/
As coberturas
Minhas coberturas serão uma sequência de letras MAIÚSCULAS. Aqui estão os valores possíveis:
P - Calabresa S - Linguiça N - piNeapple J - Jalapenos B - Pimentos de banana C - baCon
Você deve colocá-los na pizza em algum lugar. Se eu pedir um tamanho 4 e PSPCJ
, então esta é uma saída válida:
/===\
|PSPCJ|
| |
\===/
Então é isso:
/===\
|P P J|
| S C |
\===/
E isto:
/===\
| |
|PSPCJ|
\===/
Não sou muito exigente sobre onde estão minhas coberturas na pizza, desde que não estejam na crosta ou uma sobre a outra.
A janela de recolhimento
Irei a muitos lugares para buscar minha pizza, incluindo STDOUT, um arquivo, o valor de retorno de uma função, mas não uma variável.
Coisas extras
- Lacunas padrão proibidas
- Isso está marcado como code-golf, para que a resposta mais curta em bytes seja vencida!
- Não se preocupe com entradas inválidas (coberturas> espaço para pizza, etc.)
- Veja minha resposta (JS ES6) abaixo para um exemplo (espero que você possa fazer melhor)
̶5̶,̶ ̶N̶N̶N̶
̶ é também um válido entrada ̶ (ou deveria ser ̶̶5̶,̶ ̶N̶
̶ Em vez) ̶ ̶ Além disso, onde estão os cogumelos ..? :( EDIT: o Nevermind sobre a primeira pergunta, eu vejo seus casos de teste tem 2xP
.Respostas:
Pip ,
878175 bytes74 bytes de código, +1 para
-l
sinalizador.Recebe entrada como argumentos da linha de comando. Experimente online!
Abordagem
e
é a linha superior, como/=====\
. Se você reverter, também é a linha inferior.y
é a borda esquerda, como["/" "|" "|" "\"]
. Se você inverter, também será a borda direita.Em seguida, construímos o meio pegando
b
as coberturas, preenchendo-as com espaços de comprimento(a+1)*(a-2)
(ondea
está o tamanho) e agrupando-as em uma lista de linhas.Finalmente, imprimimos a linha superior com um espaço à esquerda; concatene o meio entre
y
à esquerda eRVy
à direita e imprima isso; e imprima a linha inferior com um espaço à esquerda.fonte
Python 2 ,
202,198,190,177,162,157,146 bytesExperimente online!
fonte
'\\'
,'|
' e'/
às variáveis de golfe fora de alguns bytes? É assim que eu raspei muito a minha resposta JS.(n-1)
por(--n)
, osn>4
porn>3
,(n+1)
com(n+2)
e o final(n-1)
porn
para reduzir 4 bytes?--
operador!Python 3 ,
224213195 bytesExperimente online!
fonte
JavaScript (ES6),
170161 bytesComeça pegando uma pizza deformada, de largura 2 e altura 5, estica-a horizontalmente e ajusta-a verticalmente conforme apropriado; depois, substitui o interior por coberturas ou espaços depois que eles acabam.
fonte
JS (ES6),
257255249248246244 bytesPode chamá-lo como
m(4)("PS")
1 calabresa e 1 linguiça. Provavelmente pode ser jogado mais.fonte
Carvão , 37 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Insira o tamanho da pizza.
Comece a imprimir a parte superior da pizza.
Se a pizza é um dos tamanhos maiores, adicione mais na parte superior e lateral.
Imprima mais do lado da pizza.
Complete a metade esquerda da pizza refletindo com possível sobreposição.
Complete a pizza refletindo com sobreposição variável.
Coloque as coberturas e divida-as em pedaços para que caibam dentro da pizza.
fonte