Ещё задачка.
"Напишите функцию 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, время: 14:24. |