Você gosta de assistir timelapses legais de construções ou outro trabalho maciço feito em minutos? Vamos fazer um aqui.
Estaremos olhando para uma pedreira de escavadeira, tirando fotos todos os dias para ver todo o progresso. E sua tarefa é nos mostrar esse processo!
A pedreira é definida pela largura da sua primeira camada.
A escavadeira é definida por sua capacidade de escavar em um dia.
Entrada
Largura da pedreira. Número inteiro, sempre> = 1.
Velocidade de escavação da escavadeira. Número inteiro, sempre> = 1.
Resultado
Progresso da escavação em cada dia. Começou com terreno plano intocado e terminou com pedreira concluída.
Regras
No último dia, pode haver menos unidades para escavar do que a escavadeira é capaz. O trabalho excessivo não será usado em nenhum lugar; portanto, você deve produzir uma pedreira totalmente escavada.
Todos os dias o progresso deve estar presente na saída de uma só vez. Você não pode limpar ou substituir o progresso do dia anterior na saída.
Novas linhas à direita e à direita para cada saída do dia são aceitáveis em qualquer número razoável.
Isso é código-golfe , então faça seu código o mais compacto possível.
Esclarecimentos
O trabalho começa com um terreno plano. O comprimento do solo exibido é a largura da pedreira + 2. Portanto, sempre haverá um caractere sublinhado nos dois lados da pedreira.
__________
A pedreira escavada fica assim com largura uniforme:
_ _
\ /
\ /
\ /
\/
E assim para largura ímpar
_ _
\ /
\ /
\ /
V
Aqui estão exemplos de progresso da pedreira:
_ _______
V dug 1 unit
_ ______
\/ dug 2 units
_ ___
\___/ dug 5 units
_ _
\ __/ dug 10 units
\_/
Exemplo de progresso completo. Largura da pedreira: 8. Velocidade da máquina escavadora: 4 unidades por dia.
__________
_ _____
\__/
_ _
\______/
_ _
\ __/
\__/
_ _
\ /
\ __/
\/
_ _
\ /
\ /
\ /
\/
Cornercases
A escavadeira precisará cavar no último dia exatamente sua capacidade (velocidade)
Width: 7, Speed: 3
Width: 10, Speed: 4
Retina 0.8.2 ,
163156 bytesExperimente online! Explicação:
Converta as entradas para unárias. Isso nos dá
W¶S
.Troque as entradas e duplique a largura. Isso nos dá
S¶W¶W
.Calcule o volume da pedreira. Isso nos dá
S¶W¶V
.Junte as entradas em uma linha. Isso nos dá
S;W;V
.Calcule a quantidade de progresso para cada dia em sua própria linha. Cada dia tem o formato
S;W;D
, ondeD
está0
a primeira linha e incrementa aS
cada dia até chegarV
.Exclua
S
e aumenteW
em 2 em cada linha. Isso nos dáG;D
para cada dia.Enquanto
D
for diferente de zero, caveD
ou aG-2
partir da linha (para que o primeiro e o último caracteres sejam sempre deixados), movendo a profundidade para a próxima linha. Cada linha é recuada com uma mais>
que a anterior. As linhas recentemente cavadas também incluem a<
.Transforme o recuo em espaços e o seguinte
_
em a\
.Se a
<
estiver seguindo a,\
então transforme-o em aV
, se estiver seguindo a,_
então transforme-o em a/
. Exclua todos os<
s e;
s.fonte
Python 2 , 265 bytes
Experimente online!
fonte
1+i+a
parai-~a
.sum(range(0,w+1,2))
pode serw/2*(w/2+1)
t
também pode ser embutido, resultando em 257 bytes .JavaScript (Node.js) ,
329315307300301298285275260254 bytesExperimente online!
Explicação
fonte
w
for ímpar.f=
) e pode salvar outro byte alterando os parâmetros (w=>s=>
).