Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 가장 단순한 형태의 합분수를 찾는 함수

<시간/>

다음과 같은 배열이 있습니다 -

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));
};
console.log(sumArrayOfFractions(arr));

출력

콘솔의 출력은 -

[ 1731, 140 ]