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

Sử dụng các phép toán để tạo ra kết quả mong muốn trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng chính xác 4 số, arr, làm đối số đầu tiên và đích làm đối số thứ hai.

Hàm của chúng ta cần đánh giá xem các số trong mảng arr có thể hoạt động thông qua *, /, +, -, (,) để nhận giá trị bằng target hay không.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const arr = [5, 3, 2, 1];
const target = 4;

Đầu ra

const output = true;

Giải thích đầu ra

Vì chúng ta có thể đạt được 4 điều như thế này -

(5 - 1) * (3 - 2) = 4

Ví dụ

Sau đây là mã -

const arr = [5, 3, 2, 1];
const target = 4;
const canOperate = (arr = [], target = 1) => {
   const isValid = x => Math.abs(x - target) < 0.0000001
   const helper = (arr = []) => {
      if (arr.length === 1) {
         return isValid(arr[0])
      }
      let valid = false
      for (let i = 0; i < arr.length; i++) {
         for (let j = i + 1; j < arr.length; j++) {
            const nextArr = arr.filter((x, index) => index !== i && index !== j)
            valid = valid || helper([...nextArr, arr[i] + arr[j]])
            || helper([...nextArr, arr[i] - arr[j]])
            || helper([...nextArr, arr[j] - arr[i]])
            || helper([...nextArr, arr[i] * arr[j]])
            || helper([...nextArr, arr[i] / arr[j]])
            || helper([...nextArr, arr[j] / arr[i]])
         }
      }
      return valid
   }
   return helper(arr)
}
console.log(canOperate(arr, target));

Đầu ra

true