Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การใช้การดำเนินการเพื่อให้ผลลัพธ์ตามที่ต้องการใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน 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