23.03.2019, 21:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
|
|
26.03.2019, 00:37
|
Интересующийся
|
|
Регистрация: 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;
}
|
|
26.03.2019, 09:07
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
const diff = (φ, θ) => 180 / Math.PI * Math.acos(Math.cos(Math.PI / 180 * Math.abs(φ - θ)));
UPD График этой функции: https://www.desmos.com/calculator/eh5mmuik2a
Последний раз редактировалось Malleys, 26.03.2019 в 09:12.
Причина: Добавил график
|
|
26.03.2019, 20:45
|
Интересующийся
|
|
Регистрация: 13.03.2019
Сообщений: 15
|
|
Господа, тут при нажатии на ваших скриптах кнопки "Запустить!" вылезает диалог с предупреждениями.
Похоже, я случайно отжал там опцию типа "никогда не запускать".
В общем сейчас я тут запустить ничего не могу. Не подскажете, как это можно исправить?
|
|
26.03.2019, 20:52
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от Allegro75
|
Похоже, я случайно отжал там опцию типа "никогда не запускать".
|
А там было: Больше не показывать это сообщение при запуске javascript.
Если вы про мой пример, то он ничего сам по себе не показывает, это я поставил кнопку, что бы можно было нажать, а затем открыть консоль, выбрать контекст того iframe и запустить что-то типа diff(120, 280)
|
|
28.03.2019, 01:29
|
Интересующийся
|
|
Регистрация: 13.03.2019
Сообщений: 15
|
|
Очередная задачка.
"Счастливым билетом называют такой билет с шестизначным номером, где сумма первых трех цифр равна сумме последних трех.
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;
}
|
|
28.03.2019, 20:25
|
Новичок на форуме
|
|
Регистрация: 28.03.2019
Сообщений: 1
|
|
Сообщение от Nexus
|
А можете пояснить в чем схожесть php и js?
|
Мне тоже интересно!
|
|
28.03.2019, 23:00
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от Allegro75
|
isHappyTicket.js
|
(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);
|
|
28.03.2019, 23:20
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
sum(num.slice(0,3))===sum(num.slice(3)) - что-то во всех примерах строгое сравнение, то есть предполагается, что будет подсунуто не то или перестраховка?
|
|
29.03.2019, 08:17
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
laimas, скорее перестраховка.
Честно говоря у меня просто IDE ругается на нестрогое сравнение, вот я и привык использовать везде где можно строгое сравнение, а можно почти везде.
Причина: нестрогое сравнение может привести к неожиданным приведениям типов, в итоге результат выражения может быть не тем, который ожидаешь.
Да, можно отключить предупреждения, но бывают ситуации, когда нестрогое сравнение действительно играет злую шутку.
|
|
|
|