|
Ещё задачка.
"Напишите функцию 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; } |
const diff = (φ, θ) => 180 / Math.PI * Math.acos(Math.cos(Math.PI / 180 * Math.abs(φ - θ))); UPD График этой функции: https://www.desmos.com/calculator/eh5mmuik2a |
Господа, тут при нажатии на ваших скриптах кнопки "Запустить!" вылезает диалог с предупреждениями.
Похоже, я случайно отжал там опцию типа "никогда не запускать". В общем сейчас я тут запустить ничего не могу. Не подскажете, как это можно исправить? |
Цитата:
Если вы про мой пример, то он ничего сам по себе не показывает, это я поставил кнопку, что бы можно было нажать, а затем открыть консоль, выбрать контекст того iframe и запустить что-то типа diff(120, 280) |
Очередная задачка.
"Счастливым билетом называют такой билет с шестизначным номером, где сумма первых трех цифр равна сумме последних трех. isHappyTicket.js Напишите и экспортируйте по умолчанию функцию, проверяющую является ли номер счастливым (номер может быть как числового, так и строкового типа: см. примеры ниже). Функция должна возвращать true, если билет счастливый, или false, если нет. Примеры использования: isHappyTicket(385916); // true isHappyTicket(231002); // false isHappyTicket(128722); // true isHappyTicket('054702'); // true Подсказки Преобразовать число в строку можно с помощью функции String... Преобразовать строку в число можно с помощью функции Number... Чтобы узнать длину строки, используйте свойство length..." Моё решение: const isHappyTicket = (num) => { let str = String(num); let firstSum = Number(str[0]) + Number(str[1]) + Number(str[2]); let secondSum = Number(str[3]) + Number(str[4]) + Number(str[5]); return firstSum === secondSum; } |
Цитата:
|
Цитата:
(num=>{ const sum=arr=>arr.reduce((t,n)=>+n+t,0); num=num.toString().split(''); return sum(num.slice(0,3))===sum(num.slice(3)); })(385916); |
sum(num.slice(0,3))===sum(num.slice(3)) - что-то во всех примерах строгое сравнение, то есть предполагается, что будет подсунуто не то или перестраховка?
|
laimas, скорее перестраховка.
Честно говоря у меня просто IDE ругается на нестрогое сравнение, вот я и привык использовать везде где можно строгое сравнение, а можно почти везде. Причина: нестрогое сравнение может привести к неожиданным приведениям типов, в итоге результат выражения может быть не тем, который ожидаешь. Да, можно отключить предупреждения, но бывают ситуации, когда нестрогое сравнение действительно играет злую шутку. |
Часовой пояс GMT +3, время: 15:56. |