हमारे पास सरणियों की एक सरणी है:
const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]];
ध्यान दें कि सरणी में कितने भी तत्व हो सकते हैं, लेकिन प्रत्येक उप-सरणी में सख्ती से दो संख्याएँ होनी चाहिए।
प्रत्येक उप-सरणी में दो संख्याएँ एक भिन्न दर्शाती हैं। उदाहरण के लिए, पहली उप-सरणी द्वारा दर्शाया गया भिन्न 12/56 है, दूसरा 3/45 है, आदि।
हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसी सरणी लेता है और सभी उप-सरणियों द्वारा दर्शाए गए भिन्नों का योग निकालता है। योग को भिन्न रूप में निकालें (यानी दशमलव में बदले बिना)। परिणाम को दो तत्वों की सरणी के रूप में लौटाएँ जो परिणामी भिन्न को दर्शाती हो।
कोड
const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]];
const gcd = (a, b) => {
let num = 2, res = 1;
while (num <= Math.min(a, b)) {
if (a % num === 0 && b % num === 0) { res = num; }
num++;
}
return res;
};
const sumFrac = (a, b) => {
const aDenom = a[1], aNumer = a[0];
const bDenom = b[1], bNumer = b[0];
let resDenom = aDenom * bDenom;
let resNumer = (aDenom * bNumer) + (bDenom * aNumer);
const greatestDivisor = gcd(resDenom, resNumer);
return [resNumer / greatestDivisor, resDenom / greatestDivisor];
};
const sumArrayOfFractions = arr => {
return arr.reduce((acc, val) => sumFrac(acc, val));
};
आउटपुट
[ 1731, 140 ]