Krótkie wyjaśnienie problemu
Napisz program, aby znaleźć minimalną odległość między dwoma punktami podróżującymi tylko na promieniach pochodzących od początku i okręgami wyśrodkowanymi na początku.
Wyjaśnienie lokalu
Teraz wyobraźmy sobie, że jesteśmy w samolocie, a na tym samolocie możemy podróżować tylko w specjalny sposób. Możemy podróżować na dowolnym promieniu pochodzącym z miejsca pochodzenia.
Możemy również podróżować po dowolnym kole na środku koła
Teraz naszym celem jest podróżowanie z jednego punktu na tym samolocie do drugiego. Jednak nie możemy po prostu podróżować prostą ścieżką euklidesową, możemy to zrobić tylko wtedy, gdy punkty spadną na promień emanujący z centrum.
Możemy podróżować na tym, ponieważ pada na jedno z naszych promieni.
Możemy również podróżować po okręgach wyśrodkowanych na początku.
Przykłady
Oto wyzwanie:
Musimy dotrzeć z jednego punktu do drugiego najkrótszą ścieżką; często jest to kombinacja podróżowania na kółkach i promieniach.
Może to jednak podróżować na dwóch promieniach.
Czasami istnieją dwie ścieżki, które pokonują minimalną odległość.
Problem
Twoim wyzwaniem jest napisanie programu, który po otrzymaniu dwóch punktów da nam minimalną odległość między nimi, jeśli będziemy przestrzegać tych zasad. Dane wejściowe mogą być podawane w postaci prostokątnej lub biegunowej, a wynik powinien wynosić jedną liczbę, odległość między nimi.
Przypadki testowe
(z prostokątnym wejściem)
(1,1) (1,-1) -> ~ 2.22144
(0,0) (1, 1) -> ~ 1.41421
(1,0) (-0.4161 , 0.90929) -> ~ 2
(1,1) (1, 0) -> ~ 1.19961
(1,2) (3, 4) -> ~ 3.16609