Jesteś właścicielem restauracji. Otwieracie się w nowym obszarze w Kartezji, gdzie jest tylko jedna główna droga, znana jako oś Y. Chcesz umieścić swoją restaurację w taki sposób, aby zminimalizować całkowitą odległość od restauracji i każdego domu w tym obszarze.
Wejście :
Dane wejściowe będą
n, the number of houses
house1
house2
house3
...
houseN
gdzie każdy dom jest współrzędną w formularzu x y
. Każda jednostka reprezentuje jeden kilometr.
Możesz wziąć dane wejściowe jako ciąg znaków lub podać funkcję, która pobiera dane wejściowe, w dowolnym wybranym formacie, jako argumenty.
Wyjście : współrzędna y twojej restauracji (pamiętaj, że będzie ona znajdować się na osi y). W rzeczywistości będzie znajdować się na poboczu drogi, ale różnica jest znikoma.
Zasadniczo, jeśli n-ty dom jest h_n
i D
jest funkcją odległości, to chcesz znaleźćk
taką, która D(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))
jest zminimalizowana.
Należy pamiętać, że odległość jest obliczana tak, jakby klient podróżował w dokładnie prostej linii od domu do restauracji. To jest odległość od(x, y)
twojej restauracji sqrt(x^2 + (y - k)^2)
.
Dane wyjściowe powinny być dokładne z dokładnością do co najmniej 2 miejsc po przecinku.
Dane wyjściowe mogą być drukowane jako ciąg znaków lub mogą być zwracane z funkcji.
Przykładowe wejście / wyjście:
Input:
2
5.7 3.2
8.9 8.1
Output:
5.113013698630137
Całkowita odległość w tym przykładzie wynosi około 15.4003
kilometrów.
To jest kod golfowy - wygrywa najkrótszy kod.
PS Interesuje mnie również matematyczne rozwiązanie, które nie jest tylko brutalną siłą. Nie wygra golfa kodowego, ale zyska trochę aprobaty. Oto jak zrobiłem przykładowy problem:
Niech punkt A będzie zlokalizowany na A (5.7, 3.2), a B na B (8.9, 8.1). Niech punktem rozwiązania w (0, k) będzie C. Odbij A nad osią y, aby A 'było w (-5,7, 3,2). Odległość od A 'do C jest równa odległości od A do C. Dlatego problem można zredukować do punktu C tak, że A'C + CB jest zminimalizowane. Oczywiście byłby to punkt C, który leży na linii A'B.
Nie wiem, czy dobrze by to uogólniło do 3 lub więcej punktów.
sqrt(diffX^2 + diffY^2)
? Następnie euklidesowy. Wiem, że nie pasuje to idealnie do scenariusza, ale zakładam, że klient podróżuje w linii prostej z domu.
D
? Euklidesowy?