Bir restoranın sahibisiniz. Cartesia'da y ekseni olarak bilinen tek bir ana yolun bulunduğu yeni bir bölgede açıyorsunuz. Restoranınızı, restoranınızdan ve o bölgedeki evlerin her birinden toplam mesafeyi en aza indirecek şekilde yerleştirmek istiyorsunuz.
Giriş :
Girdi
n, the number of houses
house1
house2
house3
...
houseN
burada her ev formda bir koordinattır x y
. Her birim bir kilometreyi temsil eder.
Girdiyi dize olarak alabilir veya girdiyi bağımsız değişkenler olarak seçtiğiniz formatta alan bir işlev sağlayabilirsiniz.
Çıktı : Restoranınızın y koordinatı (unutmayın, y ekseninde bulunacaktır). Aslında, yolun kenarında yer alacak, ancak fark göz ardı edilebilir.
N'inci ev ise Esasen, h_n
ve D
uzaklık fonksiyonu, daha sonra bulmak istediğiniz k
şekilde D(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))
minimize edilir.
Mesafenin, müşterinin evinden restorana tam olarak düz bir çizgide seyahat ettiği gibi hesaplandığını unutmayın. (x, y)
Restoranınıza olan mesafe budur sqrt(x^2 + (y - k)^2)
.
Çıktı en az 2 ondalık basamağa kadar doğru olmalıdır.
Çıktı bir dize olarak yazdırılabilir veya işlevden döndürülebilir.
Örnek giriş / çıkış:
Input:
2
5.7 3.2
8.9 8.1
Output:
5.113013698630137
Bu örnekteki toplam mesafe yaklaşık 15.4003
kilometredir.
Bu kod golf - en kısa kod kazanır.
PS: Ayrıca sadece kaba kuvvet değil, matematiksel bir çözümle de ilgileniyorum. Golf kodunu kazanmaz ama bazı upvotes alır. Örnek sorunu nasıl yaptım:
A noktasının A (5.7, 3.2) ve B'nin B (8.9, 8.1) 'de olmasına izin verin. (0, k) C'deki çözelti noktasını C olsun. A 'yı (-5.7, 3.2) yapmak için y ekseni üzerine A yansıtın. A 'ile C arasındaki mesafe A ile C arasındaki mesafeye eşittir. Bu nedenle, problem A noktasına C' CB 'ye indirgenecek şekilde azaltılabilir. Açıkçası, bu A'B çizgisinde yer alan C noktası olacaktır.
Bunun 3 veya daha fazla noktaya genelleme yapıp yapmayacağını bilmiyorum.
sqrt(diffX^2 + diffY^2)
? Sonra Öklid. Senaryoya mükemmel bir şekilde uymadığını biliyorum ancak müşterinin evinden bir şekilde düz bir şekilde seyahat ettiğini varsayalım.
D
? Öklid?