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

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

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng đúng 4 số arr làm đối số thứ nhất và một target làm đối số thứ hai. Hàm phải phán đoán xem các số trong mảng arr có thể vận dụng qua *, /, +, -, (, ) để được giá trị bằng target hay không.

Ví dụ, nếu đầu vào là:

Đầu vào

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

Đầu ra

const output = true;

Giải thích

Vì ta có thể đạt 4 như sau: (5 - 1) * (3 - 2) = 4.

Ví dụ

Dưới đây là mã thực hiện:

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

Kết quả

true