Une pelouse est définie comme un champ rectangulaire avec un caractère entouré de deux couches d' espaces blancs visibles . Cela signifie deux lignes au-dessus et deux lignes au-dessous, et un remplissage à deux espaces à gauche (la droite a des espaces visibles, vous n'avez donc pas besoin de l'inclure).
|||||
|||||
|||||
Une pelouse tondue est une structure similaire, sauf que le personnage principal est une version abrégée du premier caractère.
.....
.....
.....
Une tondeuse a deux caractères différents, différents des deux personnages de pelouse. Voici un exemple, avec =
comme arrière de la tondeuse et o
comme avant:
=o
Une tondeuse se déplacera autour de la pelouse verticalement et pourra également tourner sur sa face avant. La tondeuse ci-dessus peut ressembler à l'une des images ci-dessous à un moment donné de l'animation:
=o
o=
o
=
=
o
La tondeuse peut démarrer sur n'importe quel ensemble des positions ci-dessous sur la pelouse ci-dessous. Tondeuses aveco
circuleraient dans le sens des aiguilles d'une montre. Les tondeuses avec 0
rouleraient autour de la pelouse dans le sens antihoraire.
= =
0 o
=o|||||0=
|||||
=0|||||o=
o 0
= =
L'animation commence au deuxième 0. Chaque seconde, la tondeuse avance d'un espace et coupe l'herbe sur le devant. Lorsque la tondeuse quitte un endroit, elle apparaît coupée. Lorsque l'avant de la tondeuse atteint le dernier élément non coupé d'une ligne (et qu'il y a encore de l'herbe non coupée), le dos de la tondeuse tourne une fois afin de continuer la tonte actuelle (en restant dans le sens horaire / antihoraire en fonction de la position d'origine). Lorsque la tondeuse est terminée, il continue tout droit (tonte d'herbe déjà coupée) jusqu'à ce qu'il soit complètement hors de la pelouse.
Avec une tondeuse démarrant en haut à gauche, cela montre la progression de base pour une pelouse 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.... =.... ..... ..... ..... ..... ..... ..... .....
=
Contribution
Votre entrée sera les dimensions de la pelouse (deux entiers).
Production
Imprimez la pelouse et la tondeuse dans la position que vous avez choisie. Vous pouvez choisir les quatre caractères pour l'herbe, l'herbe coupée, l'avant de la tondeuse et l'arrière de la tondeuse. Vous n'avez besoin que de suffisamment d'espace pour afficher le contenu de la seconde actuelle selon les spécifications, mais un espace supplémentaire est complètement autorisé, tant qu'il a la même apparence.
Puisqu'il s'agit d'une animation , vous pouvez soit effacer la sortie chaque seconde, soit imprimer suffisamment de nouvelles lignes pour apparaître pour animer dans le cadre de visualisation (vous pouvez supposer que le cadre de visualisation est de la taille nécessaire pour apparaître pour animer).
Un intervalle de temps cohérent autre qu'une seconde est autorisé (c.-à-d. 999 millis pour économiser un octet, ou deux secondes pour une raison quelconque), mais il devrait être tel que la tondeuse à gazon semble toujours se déplacer naturellement.
Si possible, fournissez un visuel (TIO, Snippet, GIF, etc.)
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Réponses:
JavaScript (ES6 / Node.js),
664525523 caractèresNon commenté avec commentaires:
note: je suppose que je devrais récupérer le paquet 'sleep' et réécrire avec setTimeout pour être indépendant de nodejs
la source