Guest User

Untitled

a guest
Jun 25th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.35 KB | None | 0 0
  1. // 1) Написать функцию, которая принимает на вход любое количество отрезков,
  2. // заданных двумя координатами, и возвращает `true`, если любые 2 отрезка пересекаются,
  3. // иначе возвращает `false`. Пример вызова: `f({x1: 1, x2: 10}, {x1: 11, x2: 123}, {x1: 122, x2: 124}, ...)`
  4.  
  5. const intersection = (...sections) => {
  6. let isIntersection = false;
  7. sections.forEach((section, index) => {
  8. for (let i = index + 1; i < sections.length; i++) {
  9. const next = sections[i];
  10. const [first, second] = section.x1 < next.x1 ? [section, next] : [next, section];
  11. // Условие можно поменять на first.x1 <= second.x2 && first.x2 >= second.x1
  12. // если нужно чтобы x1, x2 были частью отрезка
  13. if (first.x1 < second.x2 && first.x2 > second.x1) {
  14. isIntersection = true;
  15. break;
  16. }
  17. }
  18. });
  19. return isIntersection;
  20. };
  21.  
  22. const result = intersection({ x1: 1, x2: 10 }, { x1: 11, x2: 123 }, { x1: 123, x2: 124 });
  23. console.log(result);
  24.  
  25. // 3) Написать функцию, принимающую на вход 2 числа `a` и `b`, и возвращающая `x = a/b`, при этом
  26. // a) в `x` после запятой может быть максимум 2 цифры
  27. // b) в `x` все нули после запятой должны быть убраны
  28. // Проверки (в том числе на то что `a` и `b` являются числами) делать не нужно.
  29. // Функция должна добавлять `$` в начало ответа.
  30. // Примеры вызова функции:
  31. // ```
  32. // f(1, 2); // $0.5
  33. // f(1, 3); // $0.33
  34. // f(200, 1); // $200
  35. // ```
  36.  
  37. const getDollars = (a, b) => {
  38. const printCents = !!(a % b);
  39. const result = `$${(a / b).toFixed(printCents ? 2 : 0)}`;
  40. return printCents && result[result.length - 1] === '0' ? result.slice(0, -1) : result;
  41. };
  42.  
  43. console.log('#3', getDollars(1, 2), getDollars(1, 3), getDollars(200, 1));
  44.  
  45. // 4) Написать функцию, которая превращает массив в объект,
  46. // используя четный элемент массива в качестве ключа, а следующий
  47. // нечетный элемент как значение. Цикл `for` использовать нельзя.
  48. // Пример вызова функции: `f([1, 2, 'a', 3, 'b', 'c]); // {1: 2, a: 3, b: 'c'}`
  49.  
  50. const arrayToObject = arr =>
  51. arr.reduce((acc, item, index) => {
  52. if (!(index % 2)) {
  53. acc[item] = arr[index + 1];
  54. }
  55. return acc;
  56. }, {});
  57.  
  58. const arr = [1, 2, 'a', 3, 'b', 'c'];
  59. console.log('#4', arrayToObject(arr));
  60.  
  61. // 5) Написать обратную функцию для функции из 5.
  62. // Цикл `for` использовать нельзя. Пример вызова функции:
  63. // `f({1: 2, a: 3, b: 'c'}); // [1, 2, 'a', 3, 'b', 'c]`
  64.  
  65. const objectToArray = obj => {
  66. const result = [];
  67. const keys = Object.keys(obj);
  68. keys.forEach(item => {
  69. result.push(item);
  70. result.push(obj[item]);
  71. });
  72. return result;
  73. };
  74.  
  75. const obj = { 1: 2, a: 3, b: 'c' };
  76. console.log('#5', objectToArray(obj));
Add Comment
Please, Sign In to add comment