Computer >> Máy Tính >  >> Lập trình >> Javascript

Hoàn thành phương trình bằng cách điền toán tử còn thiếu trong JavaScript


Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một loạt các số và trả về chuỗi hoạt động chính xác để thỏa mãn phương trình. Toán tử có thể được sử dụng là (+, -, *, /, ^,%).

Ví dụ -

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

Đối với mỗi đầu vào, có ít nhất một trình tự khả thi, chúng tôi bắt buộc phải trả về ít nhất một trình tự chính xác.

Thuật toán chúng tôi sẽ sử dụng để giải quyết vấn đề này là -

  • Đầu tiên, chúng tôi chọn số lớn hơn ở một trong các cạnh như trong 1 4 7, nó sẽ là 7

  • Sau đó, chúng tôi đặt một bằng để đối mặt với giữa. Giống như 1 4 7 nó sẽ là 1 4 =7

  • Cuối cùng, chúng tôi giải phương trình

  • Nếu cách đó không hiệu quả, chúng tôi thử số khác

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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