História de fundo
Não é realmente real, sshh!
Tudo começou um dia quando um colega de trabalho trouxe um pedaço de pão caseiro para o aniversário do meu chefe.
Meu chefe gostava muito desse pão e queria outro. Infelizmente, meu colega de trabalho parou, então meu chefe precisa que eu dê outro pão para ele.
O problema é que não tenho ideia de como fazer pão. Então eu disse ao meu chefe que não sou chef e que deveria procurar mais alguém que seja.
Ele disse: "Claro ... mas você perde o emprego se não puder me fazer um pão".
Então eu tive uma ideia.
Eu faria dele uma arte ascii pão de com meu skilz de codificação! Ele disse que sim, sob uma condição: "Você deve fazê-lo em menos de 351 bytes". Infelizmente para mim, meu melhor código de golfe me levou a 375 bytes. Ah, oh.
Em seguida, meu chefe acrescentou duas coisas: "Você deve me dar esse pão em uma semana (13/4) e, se o fizer, recebe um aumento de salário. Quanto menor a quantidade de bytes que você usa, melhor o salário. Mas lembre-se: se você ultrapassar os 349, perde o emprego ".
Então, preciso da sua ajuda no seu idioma de escolha para me ajudar a manter meu emprego!
Regras
Eu estava prestes a fazer um curl ... | sh
TinyURL, mas meu chefe me disse que não posso usar uma lista de brechas . Eu provavelmente poderia burlar as regras, mas meu trabalho está em jogo, então não é uma boa ideia.
O que conta como pão
Seu programa ou função deve receber 3 números inteiros positivos como entrada. Se o seu idioma tiver uma lista ou matriz, você poderá obter uma lista ou matriz desses números. Você também pode levá-los como argumentos para uma função ou programa ou como uma seqüência de números separada por espaço para STDIN, um argumento de linha de comando ou função, etc.
O primeiro número é a largura do seu pão
O segundo número é a altura do seu pão.
O terceiro número é a profundidade do seu pão.
Aqui está um pão com largura 3
, altura 2
e profundidade de1
:
/ --- \ / --- \ | | || | ___ | /
Parece estranho? Aqui está um 3x2x2:
/ --- \ / | / --- \ | | | / | ___ | /
Que tal um 3x3x3:
/ --- \ / | / | / --- \ | | | / | | / | ___ | /
Um 4x1x2:
/ ---- \ / | / ---- \ / | ____ | /
Espero que entenda! Veja minha resposta JS (ES6) abaixo para um exemplo.
Veja também casos de teste completos
Notas:
- Não se preocupe com informações válidas. Todos os tamanhos serão inteiros positivos.
- Você deve aceitar quaisquer números inteiros positivos que seu idioma possa suportar.
- Se os números forem tão altos, seu idioma falhará no StackOverflow, no estouro máximo do comprimento da string etc.
Respostas:
Carvão ,
353330 bytesEconomizou 2 bytes graças a @ ASCII-only
Economizou 3 bytes graças a @Neil reorganizando a ordem em que as linhas foram desenhadas
Experimente online!
Esta é a minha primeira tentativa no carvão. Ouvi dizer que era bom em ascii-art , então tentei.
Explicação (desatualizada)
Agora a parte de trás do pão está completa. Agora vem a face frontal.
fonte
↓→
por¶
(nova linha) e\←←←ω
por←\←ω
←\←
mas a segunda←
pertence antes daω
na próxima linha.↗δ→/
é um byte menor que↗¹↗δ¶
, mas também salvei mais alguns bytes reorganizando a ordem em que as linhas foram desenhadas: Experimente online!C,
270290320 320328 bytesFinalmente (depois de
duastrês versões incorretas), também funciona corretamente com tamanhos grandes.Experimente online!
fonte
JS (ES6), 375 bytes
Ungolfed:
fonte
Python 2 ,
234216210 bytesExperimente online!
Claro que pode ser jogado muito mais, mas é um começo.210 fará por mim por enquanto.fonte
PHP, 420 bytes
Parece que alguém foi demitido - talvez tente convencer seu chefe de que é muito mais legal no back-end.
A entrada está anexada à string do URL:
?a=[width]&b=[height]&c=[depth]
- você pode experimentá-lo on-line no meu host barato. Nessas situações, eu realmente amo usar solicitações GET.Ungolfed for transparent:
fonte
JavaScript (ES6), 204 bytes
Onde
\n
representa o caractere literal de nova linha.Em vez de mexer com caracteres repetidos, isso apenas cria uma matriz de tamanho adequado e calcula qual caractere aparece em cada célula.
fonte