Ein Rasen ist ein rechteckiges Feld mit einem Zeichen, das von zwei sichtbaren Leerzeichen umgeben ist. Dies bedeutet zwei Zeilen oberhalb und zwei Zeilen unterhalb sowie zwei Leerzeichen links (rechts sind Leerzeichen sichtbar, sodass Sie sie nicht einschließen müssen).
|||||
|||||
|||||
Ein gemähter Rasen hat eine ähnliche Struktur, mit der Ausnahme, dass die Hauptfigur eine verkürzte Version der ersten Figur ist.
.....
.....
.....
Ein Mäher besteht aus zwei verschiedenen Zeichen, die sich von den beiden Rasenzeichen unterscheiden. Hier ist ein Beispiel mit =
als Rückseite des Mähers und o
als Vorderseite:
=o
Ein Rasenmäher bewegt sich vertikal um den Rasen und kann sich auch an seiner Vorderseite drehen. Der oben abgebildete Rasenmäher kann zu einem bestimmten Zeitpunkt in der Animation wie der unten abgebildete aussehen:
=o
o=
o
=
=
o
Der Mäher kann auf einer der folgenden Positionen auf dem Rasen unter dem Rasen beginnen. Mäher mit o
würden im Uhrzeigersinn um den Rasen fahren. Mäher mit 0
würden gegen den Uhrzeigersinn um den Rasen fahren.
= =
0 o
=o|||||0=
|||||
=0|||||o=
o 0
= =
Die Animation beginnt bei Sekunde 0. Jede Sekunde bewegt sich der Mäher ein Feld vorwärts und schneidet das Gras an der Vorderseite. Wenn der Mäher eine Stelle verlässt, erscheint er geschnitten. Wenn die Mähervorderseite den letzten ungeschnittenen Gegenstand in einer Linie erreicht (und es gibt noch ungeschnittenes Gras), dreht sich der Mäherrücken einmal, um das aktuelle Mähen fortzusetzen (im Uhrzeigersinn / gegen den Uhrzeigersinn, basierend auf der ursprünglichen Position). Wenn der Mäher fertig ist, Es geht geradeaus weiter (mäht bereits geschnittenes Gras), bis es vollständig vom Rasen abfällt.
Mit einem Mäher, der oben links startet, wird der grundlegende Fortschritt für einen 5x3-Rasen angezeigt:
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.... =.... ..... ..... ..... ..... ..... ..... .....
=
Eingang
Ihre Eingabe ist die Größe des Rasens (zwei ganze Zahlen).
Ausgabe
Drucken Sie den Rasen und den Rasenmäher in der von Ihnen gewählten Position. Sie können die vier Zeichen für Gras, Schnittgras, Mäherfront und Mäherrückseite auswählen. Sie brauchen nur genügend Leerzeichen, um den Inhalt der aktuellen Sekunde gemäß den Spezifikationen anzuzeigen, aber zusätzliches Leerzeichen ist vollständig zulässig, solange es gleich aussieht.
Da es sich um eine Animation handelt , können Sie entweder die Ausgabe jede Sekunde löschen oder genügend Zeilenumbrüche drucken, um im Ansichtsrahmen animiert zu werden (Sie können davon ausgehen, dass der Ansichtsrahmen die Größe hat, die zum Animieren erforderlich ist).
Ein anderes konsistentes Zeitintervall als eine Sekunde ist zulässig (dh 999 Millis, um ein Byte oder zwei Sekunden aus irgendeinem Grund zu sparen), aber es sollte so sein, dass der Rasenmäher sich weiterhin auf natürliche Weise zu bewegen scheint.
Geben Sie nach Möglichkeit eine visuelle Darstellung an (TIO, Snippet, GIF usw.).
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Antworten:
JavaScript (ES6 / Node.js),
664525523 ZeichenMit Kommentaren unbegrenzt:
Anmerkung: Ich nehme an, ich sollte das 'sleep'-Paket entfernen und mit setTimeout neu schreiben, um knotenunabhängig zu sein
quelle