Biorąc pod uwagę ciąg, w którym pierwsza linia zawiera spacje i jeden kropka ( .
„kulka”), a następnie linie zawierające spacje, ukośniki do przodu ( /
) i ukośniki odwrotne ( \
), określ, w której kolumnie wyląduje kula po upadku z pozycji początkowej . Każdy /
przesuwa go w lewo o 1 kolumnę i każdy \
przesuwa w prawo o 1 kolumnę.
Przykładowe dane wejściowe
.
/ \ \
/ /
\ \/ \
\ /\
\ /\ \
\ /
Próbka wyjściowa
Piłka zaczyna się w kolumnie 5, uderza /
w linię 3, następnie trzy \
w liniach od 5 do 7, osiągając ostateczną pozycję:
7
Zauważ, że kolumny są indeksowane 1, głównie w celu zachowania spójności z konwencjami edytora tekstu.
Skrzynie na brzeg
Jeśli piłka uderzy /
w pierwszą kolumnę, wiecznie utknie w nieistniejącej kolumnie 0. Twój program powinien sobie z tym poradzić poprawnie, drukując 0
.
Jeśli piłka uderzy w dowolną stronę \/
wzoru, wynik jest niezdefiniowany. Twój program może zakończyć działanie bez wyjścia, zapętlić się w nieskończoność lub wydrukować komunikat o błędzie (moje rozwiązanie drukuje -1
), ale nie może drukować niczego, co mogłoby być postrzegane jako prawidłowe wyjście.
Jeśli piłka uderzy we lewy ukośnik \\
wzorem, powinna skończyć się bezpośrednio pod prawym ukośnikiem, a nie na prawo od niego. Rozwiązanie, które pierwotnie przewidywałem, było skłonne do popełnienia tego błędu, więc nie idź tą drogą!
Mogą występować spacje po .
ostatnim, ostatnim /
lub \
w każdej linii. Twój program nie powinien polegać na dostępności takiego wypełnienia. Na podobnej nuty mogą, ale nie muszą być żadne wiersze po pierwszym wierszu.
Możesz założyć, że pierwszy wiersz będzie miał zero lub więcej spacji i dokładnie jedną .
. Kolejne wiersze, jeśli występują, będą miały zero lub więcej spacji i zero lub więcej ukośników.
Szczegóły dotyczące wdrożenia
Twój program może czytać z pliku (określonego jako argument wiersza poleceń) lub czytać ze standardowego wejścia, dla twojej wygody.
Twój program musi wypisać jedną liczbę na standardowe wyjście. (Tak, końcowy znak nowej linii jest w porządku. Tak, liczba może zawierać więcej niż jedną cyfrę.)
Przypadki testowe
Wejście:
.
Wynik:
1
Zauważ, że dane wejściowe mają dokładnie jeden bajt. Jest to najmniejszy przypadek, z którym powinieneś sobie poradzić.
Wejście:
. \ \ \ \
Wynik:
6
Zauważ, że po tych ukośnikach nie ma spacji.
Wejście:
. / /\\ / \ //\ \/// // \\/ \/\ /\/
Wynik:
0
Wejście:
. / / / \\\ /\\ / \
Wynik:
1
Wejście:
. \ / / \
Wynik:
4
Wejście:
. \ \/\/\/
Wynik:
(anything but a nonnegative number)
Uwagi końcowe
To pytanie jest podobne do Symuluj (oparty na grawitacji) komputer typu kule bilardowe , ale znacznie prostsze, więc mam nadzieję, że zyska większe zainteresowanie.
Mam 169-znakowe rozwiązanie w Pythonie. Jestem pewien, że utalentowani golfiści mogą rozerwać ten rekord na kawałki. : ^)
To jest golf golfowy , więc najkrótsza odpowiedź w postaci zostanie zaakceptowana pod koniec miesiąca!