Anda adalah pemilik restoran. Anda membuka di daerah baru di Cartesia di mana hanya ada satu jalan utama, yang dikenal sebagai sumbu y. Anda ingin menempatkan restoran Anda sedemikian rupa sehingga Anda meminimalkan jarak total dari restoran Anda dan setiap rumah di daerah itu.
Masukan :
Inputnya adalah
n, the number of houses
house1
house2
house3
...
houseN
di mana setiap rumah adalah koordinat dalam bentuk x y
. Setiap unit mewakili satu kilometer.
Anda dapat mengambil input sebagai string atau menyediakan fungsi yang mengambil input, dalam format apa pun yang Anda pilih, sebagai argumennya.
Output : Koordinat-y dari restoran Anda (ingat, itu akan terletak pada sumbu-y). Sebenarnya, itu akan terletak di sisi jalan, tetapi perbedaannya dapat diabaikan.
Pada dasarnya, jika nth house adalah h_n
dan D
merupakan fungsi jarak, maka Anda ingin mencari k
yang D(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))
diminimalkan.
Perhatikan bahwa jarak dihitung seolah-olah pelanggan bepergian dalam garis yang persis lurus dari rumah mereka ke restoran. Itu adalah jarak dari (x, y)
ke restoran Anda sqrt(x^2 + (y - k)^2)
.
Keluaran harus akurat untuk setidaknya 2 tempat desimal.
Output dapat dicetak sebagai string atau dapat dikembalikan dari fungsi.
Contoh input / output:
Input:
2
5.7 3.2
8.9 8.1
Output:
5.113013698630137
Total jarak dalam contoh ini adalah sekitar 15.4003
kilometer.
Ini kode golf - kode terpendek menang.
PS Saya juga tertarik pada solusi matematika yang bukan hanya kekerasan. Itu tidak akan memenangkan kode golf tetapi akan mendapatkan beberapa upvotes. Berikut adalah contoh masalah yang saya lakukan:
Biarkan titik A berada di A (5.7, 3.2) dan B di B (8.9, 8.1). Biarkan titik solusi di (0, k) menjadi C. Refleksikan A di atas sumbu y untuk membuat A 'di (-5.7, 3.2). Jarak dari A 'ke C sama dengan jarak dari A ke C. Oleh karena itu, masalahnya dapat dikurangi ke titik C sehingga A'C + CB diminimalkan. Jelas, ini akan menjadi titik C yang terletak pada garis A'B.
Saya tidak tahu apakah ini akan digeneralisasi dengan baik menjadi 3 poin atau lebih.
sqrt(diffX^2 + diffY^2)
? Kemudian Euclidean. Saya tahu itu tidak cocok dengan skenario tetapi menganggap bahwa pelanggan bepergian dalam garis lurus entah bagaimana dari rumahnya.
D
? Euclidean?