Решение задачи Параллелограмм с Яндекс Контест

Без пояснения   Просмотров: 4643


На уроке геометрии семиклассники Вася и Петя узнали, что такое параллелограмм. На перемене после урока они стали играть в игру: Петя называл координаты четырех точек в произвольном порядке, а Вася должен был ответить, являются ли эти точки вершинами параллелограмма.

Вася, если честно, не очень понял тему про параллелограммы, и ему требуется программа, умеющая правильно отвечать на Петины вопросы.

Напомним, что параллелограммом называется четырехугольник, противоположные стороны которого равны и параллельны.

Код

def isParal(x, y, x1, y1, x2, y2, x3, y3):
    l1 = (x - x1) ** 2 + (y - y1) ** 2
    l2 = (x2 - x3) ** 2 + (y2 - y3) ** 2
    if y - y1 == 0 and y2 - y3 == 0:
        if l1 == l2:
            return 1
    if y - y1 == 0 or y2 - y3 == 0:
        return 0
    k1 = (x - x1) / (y - y1)
    k2 = (x2 - x3) / (y2 - y3)
    if l1 == l2 and k1 == k2:
        return 1
    return 0


n = int(input())
for i in range(n):
    a = list(map(int, input().split()))
    if isParal(a[2], a[3], a[0], a[1], a[4], a[5], a[6], a[7]):
        print("YES")
    elif isParal(a[2], a[3], a[0], a[1], a[6], a[7], a[4], a[5]):
        print("YES")
    elif isParal(a[2], a[3], a[4], a[5], a[0], a[1], a[6], a[7]):
        print("YES")
    elif isParal(a[2], a[3], a[4], a[5], a[6], a[7], a[0], a[1]):
        print("YES")
    elif isParal(a[2], a[3], a[6], a[7], a[4], a[5], a[0], a[1]):
        print("YES")
    elif isParal(a[2], a[3], a[6], a[7], a[0], a[1], a[4], a[5]):
        print("YES")
    else:
        print("NO")

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет