문제
정확히 두 개의 숫자 배열을 취하는 JavaScript 함수를 작성해야 합니다.
첫 번째 요소는 유리수의 분자를 지정하고 두 번째 요소는 동일한 수의 분모를 지정합니다.
우리의 함수는 각각 2개의 요소로 된 임의의 수의 하위 배열의 배열을 반환해야 합니다. 하위 배열에 의해 지정된 유리수가 추가될 때 입력 유리수가 합산되고 모든 하위 배열의 분자는 1이 되어야 합니다.
또한 하위 배열의 수가 가능한 한 적은지 확인해야 합니다.
예시
다음은 코드입니다 -
const num = '2/3'; const decompose = (num = '') => { const fractions = []; let res = eval(num); if (res >= 1) { fractions = ['' + Math.floor(res)]; res = res - Math.floor(res); }; let sum = 0; let denom = 2; while (sum <= res - 0.000000001) { if (1 / denom + sum <= res) { fractions.push("1/" + denom); sum += 1 / denom; } denom++; } return fractions; } console.log(decompose(num));
출력
다음은 콘솔 출력입니다 -
[ '1/2', '1/6' ]