Einführung
Sisyphus hatte in letzter Zeit einige Probleme bei der Arbeit. Es scheint, als würde er einfach nie etwas erledigen und würde gerne eine Lösung für dieses Problem finden.
Seine jetzige Beschäftigung erfordert es, einen Stein einen Hügel hinauf zu rollen. Normalerweise macht er seine Arbeit gut, aber jedes Mal, wenn er sich der Spitze des Hügels nähert, rollt es wieder runter.
Er ist sehr frustriert von seiner Arbeit und möchte das Problem wissenschaftlich lösen, indem er einen Computer den Stein simulieren lässt, der den Hügel hinunter rollt.
Es kommt also vor, dass Sisyphus nicht besonders gut programmiert, also können Sie ihm vielleicht helfen?
Die Herausforderung
Nach dieser dummen Einführung kommen wir zur Sache. Ihr Programm erhält eine Abbildung des Hügels und des Felsens, die ungefähr so aussieht:
#o
##
###
######
########
Wo #repräsentiert ein Teil des Hügels und orepräsentiert den Felsen.
Sie müssen jetzt ein Programm implementieren, das die Rock 1-Ebene nach unten bewegt. Zum Beispiel sollte die Ausgabe des oben genannten sein:
#
##o
###
######
########
Wenn es einen horizontal ebenen Bereich gibt, rollt der Hügel nur horizontal, also ...
o
########
... dies würde den Stein nur zur Seite rollen lassen.
o
########
Wenn es eine vertikale Fläche gibt, fällt der Stein eine Stufe herunter, also ...
#o
#
#
#####
...ergäbe...
#
#o
#
#####
Sie erhalten auch die Breite und Höhe des Bildes jeweils in einer Zeile über dem Bild. Insgesamt würde unsere Beispieleingabe also so aussehen:
10 5
#o
##
###
######
#########
(Beachten Sie, dass die Leerzeichen hier Leerzeichen sind. Wählen Sie den Text aus und sehen Sie, was ich meine.)
Ein paar Details
- Befindet sich der Rock beim Ausführen des Programms bereits in der letzten Zeile, können Sie entweder das Programm beenden oder die unveränderte Eingabe ausgeben
- Der Hügel geht immer nur bergab
Ihr Programm sollte die Ausgabe genauso formatieren wie die Eingabe (einschließlich der Abmessungen). Wenn Sie also die Ausgabe des Programms an sich selbst weiterleiten, berechnet es den nächsten Schritt.
Sie können davon ausgehen, dass es immer einen Weg nach unten gibt, sodass Eingaben, bei denen der Pfad "blockiert" ist, undefiniertes Verhalten verursachen können
Sie können davon ausgehen, dass in der letzten Zeile immer ein Leerzeichen steht. Der Stein sollte dort "ruhen". Nachdem Sie das Programm einige Male aufgerufen haben und die Ausgabe immer in sich selbst weitergeleitet haben, sollten Sie den Stein in der letzten Zeile an der Stelle ablegen, an der er sich zuvor befunden hat.
Sie können Eingaben in jeder beliebigen Form akzeptieren (stdin, file, ...). Sie müssen das GANZE Programm veröffentlichen (so dass alle vorinitialisierten Variablen als Code gelten).
Die Zeilen enden mit
\n.Sie können einige Beispiel - Eingänge erhalten hier (stellen Sie sicher , dass Sie die Räume richtig zu kopieren!)
Das ist Code-Golf , also gewinnt die funktionierende Vorlage mit den wenigsten Bytes .
Der Gewinner wird am 26. Juli 2014 ausgewählt. Danach können Sie Lösungen posten, aber nicht gewinnen
Wenn Sie Fragen haben, lassen Sie es mich in den Kommentaren wissen.
Viel Spaß beim Golfen!
#s, so dass am Ende ein Leerzeichen steht, da die Breite 10 beträgt. In diesem Fall würde der Stein (nach einigen Iterationen) dort liegen, wo sich das Leerzeichen befindet (also unten) -rechte Ecke).
