Un prato è definito come un campo rettangolare con un carattere circondato da due strati di spazi bianchi visibili . Ciò significa due righe in alto e due righe in basso e una spaziatura di due spazi a sinistra (la destra ha spazi bianchi visibili, quindi non è necessario includerla).
|||||
|||||
|||||
Un prato falciato è una struttura simile, tranne per il fatto che il personaggio principale è una versione abbreviata del primo personaggio.
.....
.....
.....
Una falciatrice è composta da due personaggi diversi, diversi dai due personaggi del prato. Ecco un esempio, con =
come la parte posteriore del tosaerba e o
come la parte anteriore:
=o
Un tosaerba si sposta verticalmente attorno al prato e può anche ruotare sulla sua parte anteriore. Il rasaerba sopra può apparire come in uno dei seguenti punti durante l'animazione:
=o
o=
o
=
=
o
Il tosaerba può iniziare su qualsiasi set delle posizioni sottostanti sul prato sottostante. Le falciatrici o
avrebbero guidato attorno al prato in senso orario. Le falciatrici 0
avrebbero guidato attorno al prato in senso antiorario.
= =
0 o
=o|||||0=
|||||
=0|||||o=
o 0
= =
L'animazione inizia al secondo 0. Ogni secondo, il rasaerba si sposta in avanti di uno spazio e taglia l'erba sul davanti. Quando il tosaerba lascia un punto, sembra tagliato. Quando la parte anteriore del rasaerba raggiunge l'ultimo elemento non tagliato su una linea (e c'è ancora erba non tagliata), il rasaerba posteriore ruota una volta in modo da continuare l'attuale taglio (rimanendo in senso orario / antiorario in base alla posizione originale) Al termine, continua dritto (falciatura dell'erba già tagliata) fino a quando non è completamente fuori dal prato.
Con un tosaerba che parte dalla parte superiore sinistra, questo mostra la progressione di base per un prato 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.... =.... ..... ..... ..... ..... ..... ..... .....
=
Ingresso
Il tuo input sarà la dimensione del prato (due numeri interi).
Produzione
Stampa il prato e il tosaerba nella posizione prescelta. È possibile scegliere i quattro caratteri per erba, erba tagliata, parte anteriore del tosaerba e parte posteriore del tosaerba. Hai solo bisogno di abbastanza spazio bianco per mostrare il contenuto del secondo attuale alle specifiche, ma lo spazio bianco extra è completamente consentito, purché appaia lo stesso.
Dato che si tratta di un'animazione , è possibile cancellare l'output ogni secondo o stampare un numero sufficiente di righe per sembrare animare nel riquadro di visualizzazione (è possibile supporre che il riquadro di visualizzazione abbia le dimensioni necessarie per apparire per animare).
È consentito un intervallo di tempo coerente diverso da un secondo (ovvero 999 millis per salvare un byte o due secondi per qualche motivo), ma dovrebbe essere tale che il tosaerba continui a muoversi in modo naturale.
Se possibile, fornire un oggetto visivo (TIO, Snippet, GIF, ecc.)
Questo è code-golf , quindi vince la risposta più breve in byte.