Ви власник ресторану. Ви відкриваєтесь у новому районі Картезії, де є лише одна головна дорога, відома як вісь y. Ви хочете розмістити ресторан таким чином, щоб ви мінімізували загальну відстань від вашого ресторану та кожного з будинків у цьому районі.
Вхід :
Вхід буде
n, the number of houses
house1
house2
house3
...
houseN
де кожен будинок є координатою за формою x y
. Кожна одиниця представляє один кілометр.
Ви можете взяти введення як рядок або надати функцію, яка приймає вхід у будь-якому форматі як аргументи.
Вихід : координата y вашого ресторану (пам’ятайте, що він буде розташований на осі y). Насправді він буде розташований збоку від дороги, але різниця незначна.
По суті, якщо n-й будинок є h_n
і D
функцією відстані, то ви хочете знайти k
такеD(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))
зведена до мінімуму.
Зауважте, що відстань обчислюється так, ніби замовник подорожує точно по прямій лінії від свого будинку до ресторану. Це відстань (x, y)
до вашого ресторануsqrt(x^2 + (y - k)^2)
.
Вихід повинен бути точним як мінімум до 2 знаків після коми.
Вихід може бути надрукований у вигляді рядка або повернутись із функції.
Приклад введення / виводу:
Input:
2
5.7 3.2
8.9 8.1
Output:
5.113013698630137
Загальна відстань у цьому прикладі становить приблизно 15.4003
кілометрів.
Це код гольфу - найкоротший виграш коду.
PS Мене також цікавить математичне рішення, яке не є просто грубою силою. Він не виграє гольф коду, але отримає кілька коштів. Ось як я зробив приклад проблеми:
Нехай точка А розташована на A (5.7, 3.2), а B на B (8.9, 8.1). Нехай точка розв’язку в (0, k) дорівнює C. Відбийте A над віссю y, щоб A 'склав (-5,7, 3.2). Відстань від A 'до C дорівнює відстані від A до C. Тому задачу можна звести до точки C такою, що A'C + CB мінімізується. Очевидно, це була б точка С, що лежить на прямій А'В.
Я не знаю, чи добре це узагальнить до 3 і більше балів.
sqrt(diffX^2 + diffY^2)
? Потім Евклідовий. Я знаю, що це не ідеально відповідає сценарію, але припускаю, що замовник їде по прямій лінії якось із свого будинку.
D
? Евклідовий?