Biorąc pod uwagę drogę ascii-art i czas, jaki musiałem, aby ją przekroczyć, powiedz mi, czy pędzę.
Jednostki
Odległość jest w dowolnej jednostce d
. Czas jest w dowolnej jednostce t
.
Droga
Oto prosta droga:
10=====
Te 10
środki 10 d
za t
. To jest ograniczenie prędkości na drodze. Droga ma 5 =
s, więc d
jest 5. Dlatego jeśli przejdę tę drogę w 0,5 t
, przeszedłem 10 d
na t
, ponieważ 5 / 0,5 = 10. Ograniczenie prędkości na tej drodze wynosi 10, więc pozostałem w granicach prędkości.
Ale jeśli przejdę tę drogę w 0,25 t
, poszedłem 20 d
na t
, ponieważ 5 / 0,25 = 20. Ograniczenie prędkości na tej drodze wynosi 10, więc przekroczyłem 10.
Przykłady i obliczenia
Zauważ, że wejście 1 to czas, który potrzebowałem na podróż drogą, a wejście 2 to sama droga.
Oto złożona droga:
Input 1: 1.5
Input 2: 5=====10=====
Najszybszy, jaki mogłem (legalnie) pojechać na pierwszej drodze (pierwsze 5 =
s) to 5 d
na t
. Ponieważ 5 (odległość) podzielona przez 5 (ograniczenie prędkości) wynosi 1, najszybszy, jaki mogłem pojechać na tej drodze, to 1 t
.
Na następnej drodze ograniczenie prędkości wynosi 10, a odległość wynosi również 5, najszybszy, jaki udało mi się przekroczyć, czyli 0,5 (5/10). Sumowanie minimalnych czasów daje wynik 1,5, co oznacza, że poszedłem dokładnie do ograniczenia prędkości.
Uwaga: Wiem, mogłem jechać naprawdę szybko na jednej drodze, naprawdę wolno na innej i nadal przekraczać 1,5, ale zakładam, że tutaj jest najlepiej.
Ostatni przykład:
Input 1: 3.2
Input 2: 3.0==========20===
Pierwsza droga ma 10 długości i ma ograniczenie prędkości 3, więc minimalny czas to 3,33333 ... (10/3)
Druga droga ma 3 długości i ma ograniczenie prędkości do 20, więc minimalny czas to 0,15 (3/20).
Sumując czasy, otrzymałem 3,483333333 ... Przekroczyłem go w 3.2, więc musiałem gdzieś pędzić.
Uwagi:
- Musisz podać jedną wyraźną wartość, jeśli bez wątpienia pędzę, i inną inną wartość, jeśli tak nie jest.
- Twój program lub funkcja może wymagać wejścia lub wyjścia, aby mieć znak nowej linii, ale powiedz to w swoim zgłoszeniu.
- Twoim pierwszym wejściem będzie moja prędkość. Będzie to dodatnia liczba zmiennoprzecinkowa, liczba całkowita lub ciąg.
- Drugim wkładem będzie droga. Zawsze będzie pasować do wyrażenia regularnego
^(([1-9]+[0-9]*|[0-9]+\.[0-9]+)=+)+\n?$
. Jeśli jesteś zainteresowany, możesz przetestować potencjalne dane wejściowe tutaj. - Możesz pobrać dane wejściowe w 2 parametrach funkcji lub programu, w 2 osobnych plikach, ze STDIN dwukrotnie lub z ciągu rozdzielanego spacjami przekazywanego do STDIN, funkcji, pliku lub parametru wiersza polecenia.
- Jeśli chcesz, możesz zmienić kolejność wejść.
- Jakieś pytania? Zapytaj poniżej w komentarzach i życzymy udanego golfa !
^(([1-9]+[0-9]*|(?!0\.0+\b)[0-9]+\.[0-9]+)=+)+\n?$
. (Byłby czystszy z wyglądem, ale wtedy potrzebowałby silnika .Net)