Find the shortest distance between two dots in two dimension 【Ruby】
May 5, 2023
Studied an algorithm. A solution for O(N²) was known but I wanted to find O(N). It’s below. If you know better one, please tell me.
dots = [[11, 22], [3, 4], [50, 60], [5, 5]] # [x, y]
def vector(first_dot, second_dot)
minus = [first_dot[0] - second_dot[0], first_dot[1] - second_dot[1]]
Math.sqrt(minus[0]**2 + minus[1]**2)
end
def compare(dots)
number = 0
compared = 1
result = vector(dots[number], dots[compared])
while 1 < dots.size
temp_result = vector(dots[number], dots[compared])
if temp_result < result
result = temp_result
end
compared += 1
if compared > (dots.size - 1)
dots.delete_at(number)
compared = number + 1
end
end
result
end
p compare(dots) #=> 2.23606797749979