Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Second solution in Clear category for Wild Dogs by juestr
from collections import Counter
from itertools import combinations
from math import sqrt
def wild_dogs(coords):
def line(dog1, dog2):
(x1, y1), (x2, y2) = dog1, dog2
def nonvertical():
k = (y2 - y1) / (x2 - x1)
d = y1 - x1 * k
return (k, d)
return x1 if x1 == x2 else nonvertical()
def distance0(line):
def nonvertdist0():
k, d = line
dist = abs(d) / sqrt(1 + k * k)
return int(dist) if dist.is_integer() else round(dist, 2)
return abs(line) if isinstance(line, int) else nonvertdist0()
counts = Counter(line(dog1, dog2) for dog1, dog2 in combinations(coords, 2))
(_, max_dogs), = counts.most_common(1)
return min(distance0(line) for line, count in counts.items() if count == max_dogs)
May 15, 2019