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

작업을 사용하여 JavaScript에서 원하는 결과 생성

<시간/>

문제

첫 번째 인수로 정확히 4개의 숫자 arr, 두 번째 인수로 대상을 취하는 JavaScript 함수를 작성해야 합니다.

우리 함수는 배열 arr의 숫자가 *, /, +, -, (, )를 통해 연산되어 target과 같은 값을 얻을 수 있는지 판단해야 합니다.

예를 들어, 함수에 대한 입력이

인 경우

입력

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

출력

const output = true;

출력 설명

이렇게 4개를 얻을 수 있기 때문에 -

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

예시

다음은 코드입니다 -

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

출력

true