Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (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;
}
Ответить с цитированием
  #22 (permalink)  
Старый 26.03.2019, 09:07
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 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. Причина: Добавил график
Ответить с цитированием
  #23 (permalink)  
Старый 26.03.2019, 20:45
Интересующийся
Отправить личное сообщение для Allegro75 Посмотреть профиль Найти все сообщения от Allegro75
 
Регистрация: 13.03.2019
Сообщений: 15

Господа, тут при нажатии на ваших скриптах кнопки "Запустить!" вылезает диалог с предупреждениями.
Похоже, я случайно отжал там опцию типа "никогда не запускать".
В общем сейчас я тут запустить ничего не могу. Не подскажете, как это можно исправить?
Ответить с цитированием
  #24 (permalink)  
Старый 26.03.2019, 20:52
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Allegro75
Похоже, я случайно отжал там опцию типа "никогда не запускать".
А там было: Больше не показывать это сообщение при запуске javascript.

Если вы про мой пример, то он ничего сам по себе не показывает, это я поставил кнопку, что бы можно было нажать, а затем открыть консоль, выбрать контекст того iframe и запустить что-то типа diff(120, 280)
Ответить с цитированием
  #25 (permalink)  
Старый 28.03.2019, 01:29
Интересующийся
Отправить личное сообщение для Allegro75 Посмотреть профиль Найти все сообщения от Allegro75
 
Регистрация: 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; 
}
Ответить с цитированием
  #26 (permalink)  
Старый 28.03.2019, 20:25
Новичок на форуме
Отправить личное сообщение для SvenSven Посмотреть профиль Найти все сообщения от SvenSven
 
Регистрация: 28.03.2019
Сообщений: 1

Сообщение от Nexus Посмотреть сообщение
А можете пояснить в чем схожесть php и js?
Мне тоже интересно!
Ответить с цитированием
  #27 (permalink)  
Старый 28.03.2019, 23:00
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,837

Сообщение от 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 (permalink)  
Старый 28.03.2019, 23:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

sum(num.slice(0,3))===sum(num.slice(3)) - что-то во всех примерах строгое сравнение, то есть предполагается, что будет подсунуто не то или перестраховка?
Ответить с цитированием
  #29 (permalink)  
Старый 29.03.2019, 08:17
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,837

laimas, скорее перестраховка.
Честно говоря у меня просто IDE ругается на нестрогое сравнение, вот я и привык использовать везде где можно строгое сравнение, а можно почти везде.
Причина: нестрогое сравнение может привести к неожиданным приведениям типов, в итоге результат выражения может быть не тем, который ожидаешь.
Да, можно отключить предупреждения, но бывают ситуации, когда нестрогое сравнение действительно играет злую шутку.
Ответить с цитированием
  #30 (permalink)  
Старый 29.03.2019, 09:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Nexus
нестрогое сравнение может привести к неожиданным приведениям типов, в итоге результат выражения может быть не тем, который ожидаешь.
А чего ожидается? Логика какая-то отпадная.

"Счастливым билетом называют такой билет с шестизначным номером" - то есть, если это тоже условие, а не информация, значит нужно проверять данные на входе, прежде чем доводить дело до суммирования. Если это условием не оговаривается, то не цифры не ожидаются по условию. Тогда что же такое складывается, что требует и проверки типа?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактор для добавления постов в блог через админку kaurav Node.JS 2 05.11.2017 16:44
Новый чат блог форум с нуля - ваши пожелания Minimus Оффтопик 0 15.08.2015 09:25
Мой авто блог loodsine Ваши сайты и скрипты 3 09.08.2011 02:49
Оцените блог VL.VG Regent Ваши сайты и скрипты 8 10.01.2010 18:05