O dia 5 de abril é o Dia Nacional da Pizza Profunda, o tema deste desafio. Dado um número inteiro positivo n
( n
é maior que 0), crie uma pizza de prato fundo ASCII. Pizza de prato fundo real mostrada:
Como você pode ver, há uma camada de crosta no fundo e ao redor do restante da pizza.
Como fazer a pizza
A crosta é feita de duas camadas. A primeira camada será n
alta e n*3
longa. Comprimento é o número de caracteres (incluindo espaços) na linha mais alta. Assim, dado n
1, a primeira camada ficaria assim:
\_/ 1 character tall
3 characters long
Se n
é dois:
\ / 2 characters tall
\__/
6 characters long
Agora, para a segunda camada da crosta. Ela vai fora a primeira crosta, interior que, portanto, será n+2
personagens altos e (n*3)+6)
caracteres. Dado n
é um:
\ / 3 characters tall
\ /
\___/
9 characters long (3 underscores, 3 slashes on either side)
Se n
é dois:
\ / 4 characters high
\ /
\ /
\____/
12 characters long
Você combinaria os dois pares mais altos \/
entre si para a crosta interna e externa. Em n
é 1:
\ \ / /
\ \_/ /
\___/
Se feito corretamente, pareceria um V sem os topos com uma diferença de um caractere entre cada camada. Por falar em topos, a crosta será unida por um par de /\
, separados por uma linha de sublinhados de (n*3)+2
comprimento para completar a crosta e a pizza.
Exemplos
Se n
for 1:
/\_____/\
\ \ / /
\ \_/ /
\___/
n
é 2:
/\________/\
\ \ / /
\ \ / /
\ \__/ /
\____/
n
é 3:
/\___________/\
\ \ / /
\ \ / /
\ \ / /
\ \___/ /
\_____/
Critério vencedor
Isso é código-golfe , então o código mais curto em bytes vence!
-
vez de um_
?Respostas:
Carvão vegetal , 35 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Insira o tamanho da pizza.
Imprima parte da base externa da crosta.
Imprima a crosta externa do lado esquerdo.
Imprima parte da crosta superior.
Imprima a crosta interna do lado esquerdo.
Imprima parte da base interna da crosta.
Reflita para completar a pizza.
Observe que as adições modernas ao carvão reduzem o tamanho para 31 bytes:
Experimente online! Link é a versão detalhada do código.
fonte
JavaScript (ES6), 136 bytes
A pizza inteira é muito repetitiva; portanto, a
r
função (projetada como um literal de modelo marcado) repete o primeiro caractere de seusn
tempos de entrada . Isso lida com as duas linhas superior e inferior da pizza. O meio é repetido substituindo uma sequência de espaços em branco; os$`
e$'
subsitutions corresponder automaticamente para aumentar e diminuir o número de espaços em branco posicionando, assim, a\ \
e/ /
apropriadamente.fonte
Python 2,
153151 bytesExperimente online
-2 bytes substituindo valores repetidos por variáveis graças a @KoishoreRoy
fonte
print' '*=~n+'\\'+'_'*-~n+'_/'
você não pode escreverprint' '*i+' \\_'+'_'*n+'_/'
? (Oun
, em vez dei
, mas eu estava copiando a linha anterior.)-~n
parai
, porque neste momentoi==n
. Mas a segunda mudança é boa. Também eu shortended-~n
, graças a sua ideia-~n
parai
, porque estava adicionando espaço. (Mas você parece ter funcionado que em seu próprio país de qualquer maneira Eu também já observou que.n
Ei
são os mesmos neste ponto.)MATLAB, 333 bytes
(Tentativa preguiçosa)
Formatado:
A idéia básica é que eu tenho alças de função para imprimir tudo, e então eu a forço bastante. O loop for é para as
n
camadas entre a parte superior e a inferior da camada interna. A repetição de(espaços) e
_
é feita usandoarrayfun
, com entradas de matriz. Tentarei pensar em maneiras mais interessantes de fazer isso se eu tiver mais tempo mais tarde.fonte
Carvão ,
5452 bytesExplicação:
Minha resposta anterior foi em Retina, um idioma para o qual eu não havia postado antes. Agora, você tem uma resposta em Charcoal, para a qual eu não publiquei uma resposta antes.
Experimente online!
fonte
PHP,
209200137133bytesfinalmente batendo JS :)
Recebe entrada do STDIN; executar
-nR
ou pedir uma pizza em família .demolir
fonte
JavaScript (ES6), 205 bytes
Este é o meu primeiro post de ascii-art !
Adicione um
f=
no início e chame likef(arg)
.Nota: Todas as quebras de linha são necessárias!
Explicação
O código primeiro declara uma matriz
a
. Em seguida, ele declaraw
eu
possui o valor de espaço em branco e sublinhado, respectivamente. Em seguida, ele declara uma variável String para armazenar o valor da crosta (que pode ser calculada/\+(n*3+2 underscores)+/\
como mencionado no Desafio). Depois disso, com umfor
loop e aTemplate Literal
, o meio da pizza é criado (com cada camada tendoi
espaços em branco no início e(n+1-i*2)+n+(n-1)
espaços em branco entre\ \
e/ /
, ondei
representa o índice dofor
loop). Por fim, a maior parte inferior da pizza é criada ((i whitespaces)+\+(n+2 underscores)+/
). Todas as peças são unidas e produzidas (ted).Se, por algum motivo, o snippet não exibir a arte ASCII corretamente, dê uma olhada aqui .
Feliz Deep Dish Pizza Day para todos!
fonte
Lote, 200 bytes
t
contém o recuo esquerdo enquantos
contém o interior; seus_
s são substituídos por espaços nas linhas do meio.l
existe apenas para evitar alguma repetição.fonte
V , 57 bytes
Experimente online!
Como (como sempre) isso contém muitos caracteres não ASCII e não imprimíveis, aqui está um hexdump:
Postarei uma explicação mais detalhada em breve, mas aqui está uma visão geral de alto nível:
fonte
C (clang) ,
211215 bytesExperimente online!
Pretty Code:
Editar% s:
fonte
CJam, 74 bytes
Tempo demais. Vou tentar outra abordagem.
Constrói a string linha por linha. Nada muito louco.
fonte
CJam, 89 bytes
Bem, isso é realmente mais longo do que minha outra solução no momento, mas acho que é mais fácil de jogar:
Rastreio de pilha:
fonte