Сложность: medium
Даны координаты четырех точек в 2D-пространстве p1, p2, p3 и p4. Верните true, если эти четыре точки образуют квадрат.
Координата точки pi представлена как [xi, yi]. Ввод не дан в каком-либо определенном порядке.
Корректный квадрат имеет четыре равные стороны с положительной длиной и четыре равных угла (по 90 градусов).
Пример:
Input: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
Output: true
👨💻 Алгоритм:
1⃣Определите функцию для вычисления расстояния между двумя точками.
2⃣Проверьте, равны ли все стороны и диагонали для трех уникальных случаев перестановки точек.
3⃣Верните true, если хотя бы одна из проверок проходит.
😎 Решение:
var dist = function(p1, p2) {
return (p2[1] - p1[1]) ** 2 + (p2[0] - p1[0]) ** 2;
};
var check = function(p1, p2, p3, p4) {
return dist(p1, p2) > 0 &&
dist(p1, p2) === dist(p2, p3) &&
dist(p2, p3) === dist(p3, p4) &&
dist(p3, p4) === dist(p4, p1) &&
dist(p1, p3) === dist(p2, p4);
};
var validSquare = function(p1, p2, p3, p4) {
return check(p1, p2, p3, p4) ||
check(p1, p3, p2, p4) ||
check(p1, p2, p4, p3);
};Ставь 👍 и забирай 📚 Базу знаний
