Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Simple Solution solution in Clear category for Wild Dogs by masterspace.dc
def wild_dogs(coords):
lines = {}
for i,m in enumerate (coords):
for j,n in enumerate (coords[i+1::]):
if m[0]!=n[0]:
line = ((m[1]-n[1])/(m[0]-n[0]),m[1]-m[0]*(m[1]-n[1])/(m[0]-n[0]))
lenght = ( (line[1] / (-1/line[0] - line[0]))**2 + (-1/line[0]*line[1]/(-1/line[0] - line[0]))**2)**0.5
else:
lenght = m[0]
if lines.get(line):
lines.update({line: [lines.get(line)[0]+1,lenght]})
else:
lines.update({line: [2,lenght]})
max_key = min([i[1] for i in lines.values() if i[0] == max([i[0] for i in lines.values()]) ])
return round(max_key,2)
# Постановка задачи:
# 1. Поочередно выбираем две точки и находим их k и b (уравнение прямой y=kx+b).
# 2. Считаем количество вхождений, а также расстояние от исходной точки до линии.Если координата x у обеих точек равна, то в длинну записываем ее значение.
# 3. Записываем результат в словарь, где ключ кортеж из k и b, а значение список [количество вхождений, расстояние]
# 4. Возращаем из словаря минимальное расстояние для максимального количества вхождений, округляя результат до 2 знаков полсле запятой.
Sept. 11, 2018