¿Te encanta ver increíbles timelapses de construcciones u otro trabajo masivo realizado en minutos? Hagamos uno aquí.
Observaremos una cantera excavadora, haciendo fotos todos los días para ver el progreso completo. ¡Y su tarea es mostrarnos este proceso!
Cantera se define por el ancho de su primera capa.
La excavadora se define por su capacidad para excavar en un día.
Entrada
Ancho de cantera. Número entero, siempre> = 1.
Velocidad de excavación del excavador. Número entero, siempre> = 1.
Salida
Progreso de la excavación de cantera en cada día. Comenzó con terreno plano sin tocar y terminó con cantera completa.
Reglas
El último día puede haber menos unidades para excavar de las que es capaz la excavadora. El trabajo excesivo no se utilizará en ninguna parte, por lo que solo debe generar una cantera totalmente excavada.
Todos los días el progreso debe estar presente en la salida a la vez. No puede borrar ni sobrescribir el progreso del día anterior en la salida.
Las nuevas líneas finales y principales para cada salida diaria son aceptables en cualquier número razonable.
Este es el código de golf , así que haga su código lo más compacto posible.
Aclaraciones
El trabajo comienza con un terreno plano. La longitud del terreno visualizado es el ancho de la cantera + 2. Por lo tanto, siempre habrá un carácter de subrayado en ambos lados de la cantera.
__________
La cantera excavada se ve así para un ancho uniforme:
_ _
\ /
\ /
\ /
\/
Y así para ancho extraño
_ _
\ /
\ /
\ /
V
Aquí hay ejemplos de progreso en canteras:
_ _______
V dug 1 unit
_ ______
\/ dug 2 units
_ ___
\___/ dug 5 units
_ _
\ __/ dug 10 units
\_/
Ejemplo de progreso completo. Ancho de cantera: 8. Velocidad de excavadora: 4 unidades por día.
__________
_ _____
\__/
_ _
\______/
_ _
\ __/
\__/
_ _
\ /
\ __/
\/
_ _
\ /
\ /
\ /
\/
Cajas de esquina
El excavador necesitará excavar el último día exactamente su capacidad (velocidad)
Width: 7, Speed: 3
Width: 10, Speed: 4
Retina 0.8.2 ,
163156 bytesPruébalo en línea! Explicación:
Convierta las entradas a unario. Esto nos da
W¶S
.Intercambie las entradas y duplique el ancho. Esto nos da
S¶W¶W
.Calcule el volumen de la cantera. Esto nos da
S¶W¶V
.Une las entradas en una línea. Esto nos da
S;W;V
.Calcule la cantidad de progreso para cada día en su propia línea. Cada día tiene el formato
S;W;D
, dondeD
está0
en la primera línea y se incrementaS
cada día hasta que llegaV
.Eliminar
S
y aumentarW
en 2 en cada línea. Esto nos daG;D
para cada día.Mientras
D
no sea cero, excave una líneaD
oG-2
la siguiente (de modo que el primer y el último carácter siempre queden), moviendo la profundidad a la siguiente línea. Cada línea está sangrada con una más>
que la anterior. Las líneas recién excavadas también incluyen a<
.Convierta la sangría en espacios y lo siguiente
_
en a\
.Si a
<
está siguiendo a\
, conviértalo en aV
, si está siguiendo a_
, conviértalo en a/
. Eliminar todos los<
sy;
s.fuente
Python 2 , 265 bytes
Pruébalo en línea!
fuente
1+i+a
ai-~a
.sum(range(0,w+1,2))
puede serw/2*(w/2+1)
t
posiblemente también pueden estar en línea, lo que resulta en 257 bytes .JavaScript (Node.js) ,
329315307300301298285275260254 bytesPruébalo en línea!
Explicación
fuente
w
es extraño.f=
) y puede guardar otro byte al cursar los parámetros (w=>s=>
).