Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function sumFracts(l) {
- if (l.length == 0) {
- return null
- }
- let arr = []
- let max
- let sum = 0
- for (let i = 0; i < l.length; i++) { // Массив знаменателей
- arr.push(l[i][1])
- }
- for (let i = 0; i < arr.length; i++) { // Нахожу максимальный знаменатель среди выборки
- if (i == 0) {
- max = arr[i]
- }
- if (max < arr[i]) {
- max = arr[i]
- }
- }
- for (let i = 0; i < arr.length; i++) { // Нахожу общий знаменатель для всех
- if (max % arr[i] != 0) {
- max++
- i = -1
- }
- }
- for (let i = 0; i < l.length; i++) { // Привожу числители в соответствии со знаменателем
- let temp = max / l[i][1]
- for (let j = 0; j < l[i].length; j++) {
- l[i][j] *= temp
- }
- }
- for (let i = 0; i < l.length; i++) { // Суммирую числители
- sum += l[i][0]
- }
- if (sum % max == 0) { // Если получается разделить, то сразу выводим результат
- return sum / max
- } else { // Если разделить не получается, выводим соответствующий красивый результат, с сокращением
- if (sum > max) {
- for (let i = 2; i < max; i++) {
- if (sum % i == 0 && max % i == 0) {
- sum /= i
- max /= i
- i = 1
- }
- }
- } else {
- for (let i = 2; i < sum; i++) {
- if (sum % i == 0 && max % i == 0) {
- sum /= i
- max /= i
- i = 1
- }
- }
- }
- return [sum, max]
- }
- }
- console.log(sumFracts([[2, 7], [1, 3], [1, 12]]))
- console.log(sumFracts([[1, 2], [1, 3], [1, 4]]))
- console.log(sumFracts([[1, 3], [5, 3]]))
- console.log(sumFracts([[12, 3], [15, 3]]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement