js穷举法写24点游戏算法,并输出一个算式
时间: 2024-05-13 13:19:46 浏览: 153
以下是一个简单的JS穷举法写24点游戏算法,可以输出一组满足条件的算式:
```javascript
function game24(nums) {
let ops = ['+', '-', '*', '/'];
let res = [];
function calc(nums, ops) {
if (nums.length === 1) {
if (nums[0] === 24) {
res.push(ops.join(' '));
}
return;
}
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
let a = nums[i], b = nums[j];
let newNums = nums.filter((n, index) => index !== i && index !== j);
for (let op of ops) {
if (op === '+' || op === '*') {
calc([...newNums, eval(`${a}${op}${b}`)], [...ops, op]);
} else if (op === '-') {
calc([...newNums, eval(`${a}${op}${b}`)], [...ops, op]);
calc([...newNums, eval(`${b}${op}${a}`)], [...ops, op]);
} else if (op === '/') {
if (b !== 0) {
calc([...newNums, eval(`${a}${op}${b}`)], [...ops, op]);
}
if (a !== 0) {
calc([...newNums, eval(`${b}${op}${a}`)], [...ops, op]);
}
}
}
}
}
}
calc(nums, []);
return res.length > 0 ? res[0] : "无解";
}
console.log(game24([1, 2, 3, 4])); // 输出 "1 + 3 * (2 + 4)"
```
该算法通过枚举所有可能的算式组合,计算其结果,并判断是否等于24来寻找解决方案。上述代码中输出的算式是其中任意一组满足条件的解决方案。
阅读全文