Wyobraź sobie podróż do punktu leżącego A mil w poziomie i B mil w pionie od aktualnej pozycji. Lub innymi słowy, podróżując od miejsca (0, 0)
do miejsca (a, b)
. Jak daleko byś musiał podróżować? To wydaje się proste pytanie, ale odpowiedź zależy od tego, kogo zapytasz. Jeśli jesteś krukiem i możesz podróżować w linii prostej , odległość do przebycia to tylko euklidesowa odległość do (a, b)
. To jest
sqrt(a^2 + b^2)
Ale jeśli jesteś nudnym człowiekiem, tak naprawdę nie chcesz iść tak daleko, więc musisz wziąć taksówkę. Większość taksówek nie jedzie prosto do celu, ponieważ zazwyczaj starają się pozostać na drodze. Rzeczywista odległość, którą ostatecznie przejedziesz, to suma odległości pionowej i poziomej. Lub wzór jest następujący:
abs(a) + abs(b)
Nazywa się to Taksówką . To zdjęcie ładnie pokazuje różnicę między nimi:
Aby się do (6, 6)
niego dostać, wrona może po prostu latać na zielonej linii, co daje dystans 6 * sqrt(2)
około 8,49. Taksówka może podążać czerwoną, niebieską lub żółtą ścieżką, ale wszystkie zajmą 12.
To prowadzi do prawdziwego pytania, które zadaję. Jeśli zarówno wrona, jak i taksówka odjeżdżają z punktu (0, 0)
i podróżują do punktu (a, b)
, to o ile dłużej trwa ścieżka taksówki? Lub, bardziej żargon matematyczny,
Biorąc pod uwagę wektor dwuwymiarowy, określ różnicę między norm2 wektora a norm1 wektora.
Musisz napisać możliwie najkrótszy program lub funkcję, aby odpowiedzieć na to pytanie. Możesz wybrać „a” i „b” jako dwa osobne dane wejściowe lub jako krotkę z dwoma przedmiotami. Możesz pobierać dane wejściowe i wyjściowe w dowolnym rozsądnym formacie. Jeśli różnica nie jest liczbą całkowitą, musisz być dokładny co najmniej do dwóch miejsc po przecinku.
Zawsze możesz założyć, że „a” i „b” będą liczbami całkowitymi, i że oba nie będą wynosić 0. (Chociaż możliwe jest, że jedna z nich będzie zero)
Jak zwykle obowiązują standardowe luki i staraj się, aby twój program był jak najkrótszy, liczony w bajtach.
Będę głosować za każdą odpowiedzią, która opublikuje wyjaśnienie, jak działa kod, i pokażę wszystkie fajne sztuczki używane do oszczędzania bajtów.
Oto kilka przykładów przetestowania kodu:
#input #output
3, 4 2
-3, 4 2
-3, -4 2
6, 6 3.51
42, 0 0
10, 10 5.86
3, 3 1.76
Miłej zabawy w golfa! :)
10,10
musi być 5,86, ponieważ wychodzi 5.85786...
i zaokrągliłeś ten poniżej.