Wprowadzenie
Syzyf miał ostatnio kłopoty w pracy. Wygląda na to, że on po prostu nigdy nic nie robi i chciałby znaleźć rozwiązanie tego problemu.
Jego obecne zatrudnienie wymaga stoczenia skały pod górę. Zwykle dobrze wykonuje swoją pracę, ale za każdym razem, gdy jest blisko szczytu wzgórza, znów się stacza.
Staje się naprawdę sfrustrowany swoją pracą i chce rozwiązać problem naukowo poprzez komputerową symulację skały staczającej się ze wzgórza.
Zdarza się, że Syzyf nie jest szczególnie dobry w programowaniu, więc może możesz mu pomóc?
Wyzwanie
Po tym głupim wprowadzeniu przejdźmy do sprawy. Twój program otrzyma ilustrację wzgórza i skały, która wygląda podobnie do tego:
#o
##
###
######
########
Gdzie #reprezentuje część wzgórza i oskałę.
Teraz musisz wdrożyć program, który przesuwa skałę o 1 warstwę w dół. Na przykład wynik powyższego powinien wynosić:
#
##o
###
######
########
Jeśli jest tam równy poziom, wzgórze tylko toczy się poziomo, więc ...
o
########
... to spowodowałoby, że kamień przewróciłby się na bok.
o
########
Jeśli jest obszar pionowy, skała spada o jeden stopień, więc ...
#o
#
#
#####
... dałby ...
#
#o
#
#####
Otrzymasz również szerokość i wysokość obrazu odpowiednio w jednym wierszu nad obrazem. Podsumowując, nasze przykładowe dane wejściowe wyglądałyby następująco:
10 5
#o
##
###
######
#########
(Zauważ, że białe znaki tutaj to spacje. Wybierz tekst i zobacz, co mam na myśli).
Trochę szczegółów
- Gdy kamień znajduje się już w ostatnim wierszu podczas uruchamiania programu, możesz albo zakończyć program, albo wyprowadzić niezmienione wejście
- Wzgórze zawsze schodzi tylko w dół
Twój program powinien sformatować dane wyjściowe dokładnie tak samo jak dane wejściowe (w tym wymiary), więc jeśli potokujesz dane wyjściowe programu do siebie, oblicza następny krok.
Możesz założyć, że zawsze jest droga na dół, więc dane wejściowe, w których ścieżka jest „blokowana”, mogą powodować niezdefiniowane zachowanie
Możesz założyć, że w ostatnim wierszu zawsze znajduje się spacja. Skała powinna tam „odpocząć”, więc po kilkukrotnym wywołaniu programu, zawsze przesyłając swoje wyjście do siebie, powinieneś skończyć ze skałą w ostatnim wierszu, leżąc tam, gdzie wcześniej była przestrzeń.
Możesz zaakceptować dane wejściowe w dowolnej formie (standardowe, plik, ...). Musisz opublikować CAŁY program (więc wszystkie wstępnie zainicjowane zmienne liczą się jako kod).
Linie są zakończone za pomocą
\n.Możesz dostać kilka przykładowych wejść tutaj (upewnij się, że kopia spacje prawidłowo!)
To jest golf golfowy , więc wygrywa działające zgłoszenie z najmniejszą liczbą bajtów .
Zwycięzca zostanie wybrany 26 lipca 2014 r. Możesz opublikować rozwiązania, ale nie możesz wygrać
Jeśli masz jakieś pytania, daj mi znać w komentarzach.
Miłej gry w golfa!
#s, więc na końcu jest jedna spacja, ponieważ szerokość wynosi 10. W tym przypadku (po kilku iteracjach) skała położyłaby się w miejscu spacji (czyli na dole -prawy róg).
