JavaScript

Какая точка ближе к началу координат?

Даны координаты двух точек (x1, y1) и x2, y2)
напишите функцию с именем distanceComparison
которая возвращает 1, если (x1, y1) ближе к началу координат
2, если (x2, y2) ближе к началу координат
0, если точки находятся на одинаковом расстоянии
НАПРИМЕР: distanceComparison(3, 4, 3, 0) должна возвратить 2
SC
Sasha Cherkashin
19
Координаты могут быть нулевыми и это задачу несколько усложняет.
Даже не уверен что мое решение на 100% правильное для абсолютно всех случаев, но для 3, 4, 3, 0 вполне работает.
Да, вижу что есть проблемы... Чтобы учитывать 0,4, 4, 0 можно сделать
if((x1 + y1) - (x2 + y2) == 0) {
result = 0;
return result
}
Но это будет ломать другие варианты
>>>
function distanceComparison(x1, y1, x2, y2) {
if(x1 != 0 && x2 != 0 && y1 != 0 && y2 != 0) {
res1 = Math.sqrt((x1**2)*(y1**2));
res2 = Math.sqrt((x2**2)*(y2**2));
result = (res1 < res2) ? 1: (res1 > res2) ? 2: 0
}
if((x1 == 0 || y1 == 0) && ((x2 != 0 || y2 != 0)) ) {
if ((Math.sqrt((x2**2)*(y2**2)) - Math.sqrt(x1 + y1)) == 0) {result = 0}
else {
if((x1 + y1) > x2 && (x1 + y1) > y2) {
result = 2
}
else {
result = 1
}
}
}
if((x1 != 0 || y1 != 0) && ((x2 == 0 || y2 == 0)) ) {
if ((Math.sqrt((x1**2)*(y1**2)) - Math.sqrt(x2 + y2)) == 0) {result = 0}
else {
if((x2 + y2) > x1 && (x2 + y2) > y1) {
result = 1
}
else {
result = 2
}
}
}
return result;
}
МГ
Михаил Гончаров
55 033
Лучший ответ
Михаил Гончаров И всё равно некоторые проблемы остались
Михаил Гончаров Сумма квадратов катетов, а не произведение... Опечаточка
Sasha Cherkashin спасибо) то большое решение работало, но не всегда, сделал ответом The Cat, ваш комментарий с коротким ответом заметил не сразу, все равно спасибо)
Ну и в чем проблема? Теорему Пифагора забыл?
Олег Ем
Олег Ем
79 575
Юрбан Сухоплюев function distanceComparison(x1, y1, x2, y2) {
res1 = Math.sqrt((x1**2)+(y1**2));
res2 = Math.sqrt((x2**2)+(y2**2));
return (res1 < res2) ? 1: (res1 > res2) ? 2: 0
}
>>>
Попутал поначалу + и *, и понесло из-за того что если в аргументах есть 0 - получался 0. А нужно просто было быть внимательнее
Нужно просто сравнить длину векторов (x1,y1) и (x2,y2).
Длина вектора вычисляется по формуле sqrt( x^2 + y^2 )
Sasha Cherkashin спасибо)

Похожие вопросы