Показать сообщение отдельно
  #22 (permalink)  
Старый 26.03.2019, 00:37
Интересующийся
Отправить личное сообщение для Allegro75 Посмотреть профиль Найти все сообщения от Allegro75
 
Регистрация: 13.03.2019
Сообщений: 15

Ещё задачка.

"Напишите функцию diff, которая принимает два угла (integer), каждый от 0 до 360, и возвращает наименьшую разницу между ними.

Примеры:

diff(0, 45) === 45; // не 315, а 45, потому что 45 меньше
diff(0, 180) === 180;
diff(0, 190) === 170; // не 190, а 170, потому что 170 меньше
diff(120, 280) === 160;"



Решил так:
const diff = (firstAngle, secondAngle) => {
  let minAngle = firstAngle <= secondAngle ? firstAngle : secondAngle;
  let maxAngle = minAngle === firstAngle ? secondAngle : firstAngle;
  const firstDiff = minAngle + (360 - maxAngle);
  const secondDiff = (180 - minAngle) + (maxAngle - 180);
  return firstDiff <= secondDiff ? firstDiff : secondDiff;
}
Ответить с цитированием