tło
Kilka miesięcy temu przygoda Twojego życia właśnie się rozpoczęła. Teraz, w tym właśnie momencie (tak, teraz), po miesiącach cierpienia i ciężkiej pracy, ty i grupa przyjaciół stoicie na szczycie świata. Tak, masz rację, jesteś na szczycie Sagarmatha .
Jednak sprawy nie idą tak dobrze, jak byś chciał. Otoczyła cię gęsta mgła, a niesamowicie źle wyglądająca burza nadchodzi tak szybko, jak to możliwe. Po drodze nie naprawiłeś żadnej liny, a twoje ślady stóp były pokryte śniegiem. Jeśli chcesz przeżyć (przynajmniej na dziś), musisz się stąd wydostać tak szybko, jak to możliwe, ale najpierw musisz znaleźć sposób, aby dowiedzieć się, która strona góry jest tą, z której powinieneś zejść.
Na szczęście zabrałeś ze sobą telefon satelitarny, który zmodyfikowałeś przed podróżą, abyś mógł w nim programować i wykonywać programy.
Wyzwanie
Udało ci się pobrać na swój telefon mapę góry w sposób staromodny ASCII-nieczytelny-na-szczycie świata. Twoim zadaniem jest zdecydowanie, która strona góry ma najłatwiejszy zjazd, dzięki czemu możesz zwiększyć swoje szanse na przetrwanie. Aby to zrobić, masz genialny pomysł, aby napisać na telefonie program, który wskaże najłatwiejszą drogę. (Uwaga: Te czynności zostały wykonane przez profesjonalistów. Podczas tej narracji żaden programista nie ucierpiał. Proszę, nie próbuj tego w domu.)
Mapy składają się wyłącznie ze znaków /
i \
(oraz spacji i znaków nowej linii). Na każdej mapie szczyt góry jest zawsze reprezentowany przez
/\
\/
a z każdej strony ( 1,2,3
lub 4
) szczytu zawsze znajdziesz „możliwą” drogę w dół góry.
1 /\ 2
3 \/ 4
Trasy są zawsze przedstawiane w następujący sposób:
\
Steep-> / /
/ / <-Flat
/ \
Flat-> \ \
/ \ <-Steep
/\
\/
gdzie każda nowa postać jest albo jednym miejscem na lewo / prawo od swojego poprzednika. Znaczenie każdego znaku jest następujące:
- Jeśli ukośnik / luz jest równoległy do strony szczytu -> liczy się jako „stroma” część.
- Jeśli ukośnik / ukośnik odwrotny jest prostopadły do strony szczytu -> liczy się jako „płaska” część.
* Dalsze informacje patrz grafika powyżej.
Uwaga : Boki mogą mieć różne długości, a postacie, które tworzą szczyt, również liczą się jako część ich boku. W przypadku losowania możesz wybrać dowolny z nich.
Standardowe luki są niedozwolone.
Wejście
Ciąg reprezentujący mapę góry lub zwykły plik tekstowy zawierający te same informacje.
Zarówno
C:\....\file.txt
lub
\
/ /
/ /
/ \
\ \
/ \
/\
\/
\ /
\ \
\ \
\ \
/ /
jako ciąg są poprawnymi danymi wejściowymi.
Wynik
Jako wyjście, należy produkować albo plik w postaci zwykłego tekstu lub przez stdout w reprezentacji profilu ASCII boku o najmniejszej średniej nachylenie stosując _
dla części płaskich i /
na stromych części wraz ze średnią nachylenie boku (number of "/")/(total chars)
.
Przykład wyjścia dla powyższej mapy:
/
___/
/
AS:0.5
Format nie jest ważny, o ile masz profil i średnią stromość.
Punktacja
Co? Czy chcesz lepszej nagrody niż ratowanie życia swojego i swojego przyjaciela oraz bycie pierwszym programistą, który programował na szczycie świata? Ok ... to jest golf golfowy, więc wygrywa najkrótszy program w bajtach.
Przypadki testowe
Wejście:
\
/ /
/ /
/ \
\ \
/ \
/\
\/
\ /
\ \
\ \
\ \
/ /
Wynik:
/
___/
/
AS=0.5
Wejście:
/
\ /
/ /
\ /
\ /
/ /
/\
\/
\ /
\ \
\ \
\ \
/ /
/
/
Wynik:
______/
AS=0.143 (1/7)
Wejście:
/ \
\ \
/ /
/ \
/\
\/
\ /
\ /
\ /
/ \
Wynik:
/
/
/
_/
AS=0.8
Odpowiedzi:
JavaScript (ES6), 303
Przetestuj uruchomienie fragmentu kodu w przeglądarce zgodnej z EcmaScript - na pewno Firefox, prawdopodobnie Chrome. Używanie ciągów szablonów, funkcji strzałek.
źródło