Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

Chúng ta cần viết một hàm JavaScript nhận vào một dãy số và trả về dãy phép toán đúng để thỏa mãn phương trình. Các toán tử cho phép: (+, -, *, /, ^, %).

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

Mỗi đầu vào có ít nhất một giải pháp, chỉ cần trả về một giải pháp đúng.

Thuật toán:

  • Chọn số lớn hơn đặt ở một vế.
  • Đặt dấu "=" đối diện số giữa.
  • Giải phương trình.
  • Nếu không thành công, thử số khác.

Ví dụ

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

Kết quả

Kết quả in ra console:

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