У меня есть 2D-список ниже:
a = [[3, 10], [7, 11], [7, 12], [8, 11], [8, 12], [12, 8], [12, 9], [13, 8], [13, 9], [14, 6], [14, 7], [15, 8], [17, 6], [18, 6]]
Есть 4 точки, которые могут образовывать квадрат:
[7, 11], [7, 12], [8, 11], [8, 12]
или это:
[12, 8], [12, 9], [13, 8], [13, 9]
Это мой код:
def find_square(a):
i = 0
result = []
while(i < len(a)):
if a[i][0] == a[i + 1][0]:
if a[i][1] == a[i + 2][1]:
if a[i + 2][0] == a[i + 3][0]:
if a[i + 1][1] == a[i + 3][1]:
result.append([a[i][0] + 1, a[i][1] + 1])
i += 4
else:
i += 3
else:
i += 2
else:
i += 1
return result
Вывод:
[8, 12], [13, 9]
Этот код вернет последнюю точку (внизу справа) квадрата. Я хочу проверить, существуют ли 4 точки, которые могут образовать квадрат со стороной 1 и вернуть нижнюю правую точку. Как лучше реализовать этот код?
Предполагается, что двумерный список отсортирован в порядке возрастания x-координаты.
Обновление:
Я обнаружил, что у моего кода есть проблема:
[7, 11], [7, 12], [7, 13], [8, 11], [8, 12]
Точка [7, 13]
заставляет мой код не обнаруживать квадрат.