समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो ठीक 4 संख्याओं की एक सरणी, arr, को पहला तर्क और एक लक्ष्य को दूसरा तर्क के रूप में लेता है।
हमारे फ़ंक्शन को यह तय करना होगा कि सरणी arr में संख्याओं को *, /, +, -, (, ) के माध्यम से संचालित करके लक्ष्य के बराबर मान प्राप्त किया जा सकता है या नहीं।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है
इनपुट
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