Advertisement
sheredega

JS - code2

Dec 13th, 2021
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function sumFracts(l) {
  2.     if (l.length == 0) {
  3.         return null
  4.     }
  5.     let arr = []
  6.     let max
  7.     let sum = 0
  8.     for (let i = 0; i < l.length; i++) { // Массив знаменателей
  9.         arr.push(l[i][1])
  10.     }
  11.     for (let i = 0; i < arr.length; i++) { // Нахожу максимальный знаменатель среди выборки
  12.         if (i == 0) {
  13.             max = arr[i]
  14.         }
  15.         if (max < arr[i]) {
  16.             max = arr[i]
  17.         }
  18.     }
  19.     for (let i = 0; i < arr.length; i++) { // Нахожу общий знаменатель для всех
  20.         if (max % arr[i] != 0) {
  21.             max++
  22.             i = -1
  23.         }
  24.     }
  25.     for (let i = 0; i < l.length; i++) { // Привожу числители в соответствии со знаменателем
  26.         let temp = max / l[i][1]
  27.         for (let j = 0; j < l[i].length; j++) {
  28.             l[i][j] *= temp
  29.         }
  30.     }
  31.     for (let i = 0; i < l.length; i++) { // Суммирую числители
  32.         sum += l[i][0]
  33.     }
  34.     if (sum % max == 0) { // Если получается разделить, то сразу выводим результат
  35.         return sum / max
  36.     } else { // Если разделить не получается, выводим соответствующий красивый результат, с сокращением
  37.         if (sum > max) {
  38.             for (let i = 2; i < max; i++) {
  39.                 if (sum % i == 0 && max % i == 0) {
  40.                     sum /= i
  41.                     max /= i
  42.                     i = 1
  43.                 }
  44.             }
  45.         } else {
  46.             for (let i = 2; i < sum; i++) {
  47.                 if (sum % i == 0 && max % i == 0) {
  48.                     sum /= i
  49.                     max /= i
  50.                     i = 1
  51.                 }
  52.             }
  53.         }
  54.         return [sum, max]
  55.     }
  56. }
  57.  
  58.  
  59. console.log(sumFracts([[2, 7], [1, 3], [1, 12]]))
  60. console.log(sumFracts([[1, 2], [1, 3], [1, 4]]))
  61. console.log(sumFracts([[1, 3], [5, 3]]))
  62. console.log(sumFracts([[12, 3], [15, 3]]))
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement