首页 前端知识 html JavaScript css 24点计算器

html JavaScript css 24点计算器

2024-07-20 17:07:30 前端知识 前端哥 152 284 我要收藏

源代码       采用穷举计算方法

讲人话:根据四个数随机列算式,算出来是24就显示在列表里。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>24 Point Game</title>
<style>
    body {
        background: #f0f0f0;
        font-family: Arial, sans-serif;
        margin: 0;
        padding: 0;
        display: flex;
        justify-content: center;
        align-items: center;
        min-height: 100vh;
    }
    .game-container {
        background: #fff;
        border-radius: 10px;
        box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        padding: 20px;
        width: 400px;
    }
    h1 {
        text-align: center;
        color: #333;
    }
    input[type="number"] {
        width: 100%;
        padding: 10px;
        margin-bottom: 10px;
        border: none;
        border-radius: 5px;
        box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
    }
    button {
        width: 100%;
        padding: 10px;
        background: #007bff;
        color: #fff;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        transition: background 0.3s;
    }
    button:hover {
        background: #0056b3;
    }
    .results {
        margin-top: 20px;
        color: #333;
    }
    .results p {
        margin: 5px 0;
    }
</style>
</head>
<body>
<div class="game-container">
    <h1>24 Point Game</h1>
    <input type="number" id="num1" placeholder="Enter Number 1">
    <input type="number" id="num2" placeholder="Enter Number 2">
    <input type="number" id="num3" placeholder="Enter Number 3">
    <input type="number" id="num4" placeholder="Enter Number 4">
    <button οnclick="solve24Point()">Calculate</button>
    <div class="results" id="results"></div>
</div>

<script>
function solve24Point() {
    const numbers = [
        parseFloat(document.getElementById('num1').value),
        parseFloat(document.getElementById('num2').value),
        parseFloat(document.getElementById('num3').value),
        parseFloat(document.getElementById('num4').value)
    ];
    const solutions = findSolutions(numbers);
    displaySolutions(solutions);
}

function findSolutions(nums) {
    const ops = ['+', '-', '*', '/'];
    const solutions = [];
    const permutations = getPermutations(nums);
    
    for (let perm of permutations) {
        for (let op1 of ops) {
            for (let op2 of ops) {
                for (let op3 of ops) {
                    let expr = `(${perm[0]} ${op1} ${perm[1]}) ${op2} (${perm[2]} ${op3} ${perm[3]})`;
                    let result = evalExpression(expr);
                    if (Math.abs(result - 24) < 0.01) {
                        solutions.push(`(${perm[0]} ${op1} ${perm[1]}) ${op2} (${perm[2]} ${op3} ${perm[3]}) = ${result.toFixed(2)}`);
                    }
                }
            }
        }
    }
    return solutions;
}

function getPermutations(arr) {
    if (arr.length <= 2) return arr.length === 2 ? [arr, [arr[1], arr[0]]] : arr;
    return arr.reduce((acc, item, i) => acc.concat(
        getPermutations(arr.slice(0, i).concat(arr.slice(i + 1)))
            .map(x => [item].concat(x))
    ), []);
}

function evalExpression(expression) {
    try {
        return eval(expression);
    } catch (e) {
        return NaN;
    }
}

function displaySolutions(solutions) {
    const resultsDiv = document.getElementById('results');
    resultsDiv.innerHTML = '';
    if (solutions.length > 0) {
        solutions.forEach(solution => {
            resultsDiv.innerHTML += `<p>${solution}</p>`;
        });
    } else {
        resultsDiv.innerHTML = '<p>No solution found.</p>';
    }
}
</script>
</body>
</html>

 

转载请注明出处或者链接地址:https://www.qianduange.cn//article/14066.html
标签
评论
发布的文章

HTML5 移动开发秘籍(一)

2024-08-05 23:08:12

【HTML5系列教程】

2024-08-05 23:08:12

HTML5面试题

2024-08-05 23:08:06

JQuery基础---01

2024-08-05 23:08:34

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!