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

JavaScript에서 누락된 연산자를 채워 완전한 방정식


많은 숫자를 입력받아 방정식을 만족시키기 위해 올바른 연산 순서를 반환하는 JavaScript 함수를 작성해야 합니다. 사용할 수 있는 연산자는 (+, −, *, /, ^, %)입니다.

예를 들어 -

Input : 5 3 8          Output : 5+3=8
Input : 9 27 3         Output : 9=27/3
Input : 5 2 25 , 1 5 2 Output : 5^2=25 , 1=5%2

각 입력에 대해 가능한 시퀀스가 ​​하나 이상 있으며 올바른 시퀀스를 하나 이상 반환해야 합니다.

이 문제를 해결하기 위해 사용할 알고리즘은 -

  • 먼저 1 4 7에서 7과 같이 한 쪽에서 더 큰 숫자를 선택합니다.

  • 그런 다음 중앙을 향한 것과 같은 것을 넣습니다. 1 4 7과 같이 1 4=7이 됩니다.

  • 마지막으로 방정식을 풉니다.

  • 작동하지 않으면 다른 번호로 시도합니다.

예시

이에 대한 코드는 -

const arr = ["5 3 8", "9 27 3", "5 2 25", "1 5 2", "3 3 3 30"];
const findCombination = (arr = []) => {
   const answers = [];
   for(let i = 0; i < arr.length; i++){
      const el = arr[i];
      // using brute force to try solutions
      for(let n = 0; n < 1000; n++){
         const s = el.replace(/ /g, () => "+−
         */^%="[Math.floor(Math.random() * 7)]);
         if(eval(s.replace(/=/g, "===").replace(/\^/g, "**")) === true
         && answers.indexOf(s) === −1){
            answers.push(s);
         };
      };
   }
   return answers;
};
console.log(findCombination(arr));

출력

콘솔의 출력은 -

[
   '5+3=8',
   '9=27/3',
   '5^2=25',
   '1=5%2',
   '3=3%3^30',
   '3^3+3=30',
   '3+3^3=30'
]