Giải thích vấn đề ngắn gọn
Viết chương trình tìm khoảng cách tối thiểu giữa hai điểm chỉ di chuyển trên các tia phát ra từ điểm gốc và các vòng tròn tập trung vào điểm gốc.
Giải thích về tiền đề
Bây giờ hãy tưởng tượng chúng ta đang ở trên một chiếc máy bay, và trên chiếc máy bay này, chúng ta chỉ được phép đi du lịch theo những cách đặc biệt. Chúng tôi được phép đi trên bất kỳ tia phát ra từ nguồn gốc.
Chúng ta cũng có thể đi trên bất kỳ vòng tròn nào tập trung tại một vòng tròn
Bây giờ mục tiêu của chúng tôi là đi từ điểm này đến máy bay khác. Tuy nhiên, chúng ta không thể chỉ đi trên một con đường Euclidian đơn giản, chúng ta chỉ có thể làm điều này nếu các điểm rơi vào một tia phát ra từ trung tâm.
Chúng ta có thể đi du lịch trên cái này vì nó rơi vào một trong những tia sáng của chúng ta.
Chúng tôi cũng có thể đi du lịch trên các vòng tròn tập trung tại điểm gốc.
Ví dụ
Bây giờ đây là thách thức:
Chúng ta phải đi từ điểm này đến điểm khác trong con đường ngắn nhất; thường thì đây là sự kết hợp của việc đi lại trên các vòng tròn và tia.
Điều này, tuy nhiên, nó cũng có thể đi trên hai tia.
Đôi khi tồn tại hai con đường di chuyển khoảng cách tối thiểu.
Vấn đề
Thử thách của bạn là viết một chương trình mà khi được cho hai điểm sẽ cho chúng ta khoảng cách tối thiểu giữa chúng nếu chúng ta tuân theo các quy tắc này. Các đầu vào có thể được đưa ra ở dạng hình chữ nhật hoặc cực và đầu ra phải là một số, khoảng cách giữa.
Các trường hợp thử nghiệm
(với đầu vào hình chữ nhật)
(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