Um gramado é definido como um campo retangular com um caractere cercado por duas camadas de espaço em branco visível . Isso significa duas linhas acima e duas linhas abaixo e um preenchimento de dois espaços à esquerda (a direita tem espaço em branco visível, portanto você não precisa incluí-lo).
|||||
|||||
|||||
Um gramado aparado é uma estrutura semelhante, exceto que o personagem principal é uma versão abreviada do primeiro personagem.
.....
.....
.....
Um cortador de grama tem dois caracteres diferentes, diferentes dos caracteres do gramado. Aqui está um exemplo, com =a parte de trás do cortador e oa frente:
=o
Um cortador de grama se moverá verticalmente no gramado e também poderá girar de frente. O cortador de grama acima pode se parecer com qualquer um dos itens abaixo durante algum momento da animação:
=o
o=
o
=
=
o
O cortador de grama pode iniciar em qualquer conjunto das posições abaixo no gramado abaixo. Os cortadores de grama rodavam opelo gramado no sentido horário. Os cortadores de 0grama dirigiam pelo gramado no sentido anti-horário.
= =
0 o
=o|||||0=
|||||
=0|||||o=
o 0
= =
A animação começa no segundo 0. A cada segundo, o cortador de grama avança um espaço e corta a grama de frente. Quando o cortador desocupa um local, ele aparece cortado. Quando a frente do cortador de grama atinge o último item sem cortes de uma linha (e ainda há grama cortada), o cortador de grama gira uma vez para continuar o corte atual (permanecendo no sentido horário / anti-horário com base na posição original) Quando o cortador estiver terminado, continua em linha reta (cortando a grama já cortada) até sair completamente do gramado.
Com um cortador de grama começando no canto superior esquerdo, isso mostra a progressão básica de um gramado 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
Sua entrada será as dimensões do gramado (dois inteiros).
Resultado
Imprima o gramado e o cortador na posição escolhida. Você pode escolher os quatro caracteres para grama, grama cortada, frente do cortador e cortador de grama. Você só precisa de espaço em branco suficiente para mostrar o conteúdo do segundo atual às especificações, mas um espaço em branco extra é completamente permitido, desde que pareça o mesmo.
Como se trata de uma animação , você pode limpar a saída a cada segundo ou imprimir novas linhas suficientes para aparecer para animar no quadro de visualização (você pode assumir que o quadro de visualização é o tamanho necessário para aparecer para animar).
É permitido um intervalo de tempo consistente diferente de um segundo (ou seja, 999 milis para salvar um byte ou dois segundos por algum motivo), mas deve ser tal que o cortador de grama ainda pareça estar se movendo naturalmente.
Se possível, forneça um visual (TIO, Snippet, GIF etc.)
Isso é código-golfe , então a resposta mais curta em bytes vence.