introduction
Sisyphe éprouvait récemment des problèmes au travail. Il semble qu'il n'obtienne jamais rien et il aimerait trouver une solution à ce problème.
Son emploi actuel nécessite de faire rouler un rocher sur une colline. Il fait généralement bien son travail, mais chaque fois qu'il est près du sommet de la colline, il redescend.
Il devient vraiment frustré par son travail et veut résoudre le problème scientifiquement en ayant un ordinateur simulant le rocher qui roule sur la colline.
Il se trouve que Sisyphe n'est pas particulièrement bon en programmation, alors peut-être pourriez-vous l'aider?
Le défi
Après cette introduction stupide, passons aux affaires. Votre programme recevra une illustration de la colline et du rocher qui ressemble à ceci:
#o
##
###
######
########
Où #représente une partie de la colline et oreprésente le rocher.
Vous devez maintenant implémenter un programme qui déplace la couche de roche 1 vers le bas. Par exemple, la sortie de ce qui précède devrait être:
#
##o
###
######
########
S'il y a une zone horizontale uniforme, la colline roule simplement horizontalement, alors ...
o
########
... cela ferait juste rouler la pierre sur le côté.
o
########
S'il y a une zone verticale, le rocher tombe d'un pas, alors ...
#o
#
#
#####
... céderait ...
#
#o
#
#####
Vous recevrez également la largeur et la hauteur de l'image respectivement sur une ligne au-dessus de l'image. Donc, au complet, notre exemple d'entrée ressemblerait à ceci:
10 5
#o
##
###
######
#########
(Notez que les espaces blancs ici sont des espaces. Sélectionnez le texte et voyez ce que je veux dire.)
Quelques détails
- Lorsque la roche est déjà dans la dernière ligne lors de l'exécution du programme, vous pouvez choisir de terminer le programme ou de sortir l'entrée inchangée
- La colline ne descend que vers le bas
Votre programme doit formater la sortie exactement la même que l'entrée (y compris les dimensions), donc si vous dirigez la sortie du programme vers lui-même, il calcule l'étape suivante.
Vous pouvez supposer qu'il y a toujours un chemin vers le bas, donc l'entrée où le chemin est "bloqué" peut provoquer un comportement indéfini
Vous pouvez supposer qu'il y a toujours un espace dans la dernière ligne. La roche doit "reposer" là-bas, donc après avoir appelé le programme plusieurs fois, en dirigeant toujours sa sortie en elle-même, vous devriez vous retrouver avec la roche dans la dernière ligne, en posant où l'espace était auparavant.
Vous pouvez accepter des entrées sous n'importe quelle forme que vous souhaitez (stdin, fichier, ...). Vous devez publier le programme ENTIER (donc toutes les variables pré-initialisées comptent comme du code).
Les lignes se terminent par
\n.Vous pouvez obtenir des exemples d'entrées ici (assurez-vous de bien copier les espaces!)
C'est du code-golf , donc la soumission de travail avec le moins d' octets est gagnante.
Le gagnant sera choisi le 26 juillet 2014. Vous pouvez poster des solutions après cela, mais vous ne pouvez pas gagner
Si vous avez des questions, faites-le moi savoir dans les commentaires.
Bon golf!
#s, donc il y a un espace à la fin car la largeur est de 10. Dans ce cas (après quelques itérations), la roche reposerait là où se trouve l'espace (donc en bas) -le coin droit).
