Un césped se define como un campo rectangular con un carácter rodeado por dos capas de espacio en blanco visible . Esto significa dos líneas arriba y dos líneas abajo, y un relleno de dos espacios a la izquierda (la derecha tiene un espacio en blanco visible, por lo que no es necesario incluirlo).
|||||
|||||
|||||
Un césped cortado es una estructura similar, excepto que el personaje principal es una versión abreviada del primer personaje.
.....
.....
.....
Un cortacésped tiene dos caracteres diferentes, diferentes de los dos caracteres del césped. Aquí hay un ejemplo, con =
la parte posterior del cortacésped y o
la parte delantera:
=o
Una cortadora de césped se moverá alrededor del césped verticalmente y también puede girar sobre su frente. El cortacésped anterior puede verse como cualquiera de los siguientes durante algún punto de la animación:
=o
o=
o
=
=
o
El cortacésped puede arrancar en cualquier conjunto de las siguientes posiciones en el césped debajo. Las o
cortadoras de césped conducirían alrededor del césped en el sentido de las agujas del reloj. Las 0
cortadoras de césped conducirían alrededor del césped en sentido antihorario.
= =
0 o
=o|||||0=
|||||
=0|||||o=
o 0
= =
La animación comienza en el segundo 0. Cada segundo, el cortacésped avanza un espacio y corta el césped en su frente. Cuando el cortacésped desocupa un lugar, parece cortado. Cuando el cortacésped llega al último elemento sin cortar en una línea (y todavía hay hierba sin cortar), el cortacésped gira una vez para continuar con el cortacésped actual (permaneciendo en sentido horario / antihorario según la posición original) Cuando el cortacésped está terminado, continúa recto (cortar el césped ya cortado) hasta que esté completamente fuera del césped.
Con un cortacésped que comienza en la parte superior izquierda, esto muestra la progresión básica para un césped de 5x3:
Second 0 Second 1 Second 2 Second 3 Second 4 Second 5 Second 6 Second 7 Second 8 Second 9 Second 10 Second 11 Second 12 Second 13 Second 14 Second 15 Second 16 Second 17 Second 18 Second 19 Second 20 Second 21 Second 22
=
=o||||| =o|||| =o||| .=o|| ..=o| ...=o ....o ....= ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .....
||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||o ||||= ||||. ||||. ||||. ||||. ||||. ||||. o|||. =o|||. =o||. .=o|. ..=o. ...=o ....=o .....=o
||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||o ||||o= |||o= ||o=. |o=.. o=... o.... =.... ..... ..... ..... ..... ..... ..... .....
=
Entrada
Su entrada será las dimensiones del césped (dos enteros).
Salida
Imprima el césped y la cortadora de césped en la posición elegida. Puede elegir los cuatro caracteres para hierba, cortar hierba, segadora delantera y segadora trasera. Solo necesita suficiente espacio en blanco para mostrar el contenido del segundo actual a las especificaciones, pero el espacio en blanco adicional está completamente permitido, siempre que se vea igual.
Como se trata de una animación , puede borrar la salida cada segundo o imprimir suficientes líneas nuevas para que parezcan animarse en el marco de visualización (puede suponer que el marco de visualización es del tamaño necesario para aparecer para animar).
Se permite un intervalo de tiempo constante que no sea un segundo (es decir, 999 milis para ahorrar un byte, o dos segundos por alguna razón), pero debe ser tal que la cortadora de césped todavía parece moverse de forma natural.
Si es posible, proporcione un visual (TIO, Snippet, GIF, etc.)
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
Respuestas:
JavaScript (ES6 / Node.js),
664525523 caracteresSin minificar con comentarios:
nota: supongo que debería obtener el paquete 'sleep' y volver a escribir con setTimeout para que sea nodejs independiente
fuente