Este é um bolo:
_========_
| |
+________+
| |
+________+
| |
+________+
Tem 8 de largura, 3 de altura e 1 de profundidade.
Você deve escrever um programa que faça um bolo com 3 entradas. A primeira entrada controla quantos sublinhados existem no meio =
es na parte superior. Aqui está o primeiro bolo com uma largura de 10 em vez de 8:
_==========_
| |
+__________+
| |
+__________+
| |
+__________+
A segunda entrada controla a altura do bolo. Aqui está o segundo bolo com uma altura de 4 em vez de 3:
_==========_
| |
+__________+
| |
+__________+
| |
+__________+
| |
+__________+
Observe a repetição das camadas.
A terceira entrada controla a profundidade. Isso é quantos | |
s para incluir na parte superior. Aqui está o terceiro bolo com profundidade de 2 em vez de 1:
_==========_
| |
| |
+__________+
| |
+__________+
| |
+__________+
| |
+__________+
Você pode imprimir espaços em branco à direita. Casos de teste:
Entrada: 3
, 3
,3
Resultado:
_===_
| |
| |
| |
+___+
| |
+___+
| |
+___+
(Espero nunca conseguir esse bolo)
Entrada: 3
, 2
,1
Resultado:
_===_
| |
+___+
| |
+___+
Entrada: 5
, 5
,5
Resultado:
_=====_
| |
| |
| |
| |
| |
+_____+
| |
+_____+
| |
+_____+
| |
+_____+
| |
+_____+
Respostas:
V ,
25, 20 bytesExperimente online!
Hexdump:
Obrigado a @ nmjmcman101 por salvar três bytes e me lembrar de um operador antigo que salvou outros dois bytes.
Explicação:
a
,,b
ec
são os três argumentos.fonte
Ò r|$.
comÒ|è
para alguns bytes. Experimente online!è
até existia. Eu tive que mexer no meu cérebro para lembrar o que ele faz. Mas isso é realmente inteligente! De fato, o uso da variante maiúsculaÈ<char>
provavelmente também pode salvar mais alguns bytes em alguns outros lugares. Obrigado por me lembrar! :)Carvão ,
3426 bytesExperimente online! Link é a versão detalhada do código. Toma parâmetros na largura, profundidade e altura da ordem. Explicação:
fonte
Mathematica, 167 bytes
fonte
PHP> = 7.1, 104 bytes
Versão Online
fonte
for([,$w,$h,$t]=$argv;$i<2*$h+$t;)echo str_pad($e="_|+"[$b=$i++<$t?$i>1:2-($i-$t&1)],$w+1,"= _"[$b])."$e\n";
$b=$i++<$t?$i>1:1+$_++%2
.Ruby , 62 bytes
Experimente online!
fonte
Japonês ,
5147 bytesExperimente online!
A entrada é obtida na largura, altura e profundidade da ordem.
fonte
Geléia ,
3029 bytesAlternância de -1 byte de uma adição a um XOR para converter entre colunas externas e internas, permitindo uma pesquisa de 5 caracteres em vez de ter duas
_
entradas.Programa completo de tomar três argumentos do programa de
depth
,height
,width
e imprimir o bolo.Experimente online!
Quão?
fonte
dc , 108 bytes
Experimente online!
fonte
Röda , 65 bytes
Experimente online!
fonte
Java 7 ,
169164158 bytesExperimente online!
Ungolfed:
fonte
u=t+u+"+\n" inside the for-loop:
for (u = t + u + "+ \ n; a [2] -> 1;) s + = t;`. Mas uma boa resposta, +1 de mim.05AB1E ,
3331 bytesExperimente online!
Explicação
fonte
Lote do Windows,
211 180163 bytesJogou um total de 48 bytes graças ao @Neil!
fonte
@
em cada linha e depoisdo
é um pouco menor que@echo off
. 2.@call set w=%%w%%_
evitasetlocal enabledelayedexpansion
. 3. Use@for /l %%p in (2,1,%2)
. 4. IMHO você deve adicionar@set w=
para que o código funcione mais de uma vez.@set w=
, o código não funcionará mais de uma vez?@for /l %%p in (1,1,%1)do
parece ter desaparecido. 2. Seu bolo parece ter a altura errada, pelo menos não parece coincidir com o caso de teste quando eu tento. 3. Se você executar o script duas vezes na mesma sessão de comando, o bolo ficará cada vez mais amplo.@
depois do&
. 2 Se você alterar o segundo loop para(2,1,%3)
e o terceiro loop para(1,1,%2)
, acho que pode excluir aecho +%w%+
linha. 3. Se contei corretamente, acho que você deve preencherw
espaços em vez de_
s, pois isso resultará em menos substituições. (Eu usaria@call set w= %%w%%
se de outra forma o espaço é difícil de detectar!)Haskell , 87 bytes
fonte
(w#t)d= ...
salva um byte.SOGL V0.12 , 25 bytes
Experimente aqui!
Espera a entrada como largura, profundidade e altura.
fonte
Python 2,
12412212010592 bytes-15 bytes usando STDIN em vez de argumentos do programa
-13 bytes mudando para Python 2 (por
input()
números inteiros eprint
instrução)-12 bytes de Caird Coinheringaahing
Experimente online!
Python 3,
124122120105 bytesExperimente online!
Se um programa completo não for necessário:
Python 3,
8784 bytesExperimente online!
fonte
Javascript (ES6),
161157 bytesfonte
Python 2 , 93 bytes
Experimente online!
fonte
Perl 5 , 85 + 1 (-a) = 86 bytes
Experimente online!
fonte
JavaScript / ES6, 90 bytes
Acabei de escrever uma solução aproximada e, por acaso, superei a resposta JS existente em 56 bytes. Depois joguei 11 bytes.
Aqui está uma demonstração.
fonte
Tela , 23 bytes
Experimente aqui!
fonte