문제
정확히 두 개의 숫자 배열을 취하는 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' ]