随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

[转]24点计算器

来自:https://ip138.com/24dian/

 

复制代码
(function(){
    function calc24(){
        var expression = [].slice.call(arguments).sort();
        var operator = ['+','-','*','/'],result = [],hash = {};
        (function(expression){
            var len = expression.length;
            var group_str = expression.slice(0).sort().toString();
            if(!hash[group_str]){
                hash[group_str] = true;
                if(len>1){
                    for(var i=0;i<len-1;i++){
                        for(var j=i+1;j<len;j++){
                            var sort_expression = expression.slice(0);
                            var exp1 = sort_expression.splice(j,1)[0];
                            var exp2 = sort_expression.splice(i,1)[0];
                            for(var n=0;n<4;n++){
                                var new_expression = sort_expression.slice(0);
                                new_expression.splice(0,0,n>1||len==2?exp1+operator[n]+exp2:'('+exp1+operator[n]+exp2+')');
                                arguments.callee(new_expression);
                                if(exp1!=exp2&&n%2){
                                    new_expression.splice(0,1,n>1||len==2?exp2+operator[n]+exp1:'('+exp2+operator[n]+exp1+')');
                                    arguments.callee(new_expression);                        
                                }
                            }
                        }
                    }
                }else if(Math.abs(eval(expression[0])-24)<1e-6){
                    result.push(expression[0]);
                }
            }
        })(expression);
        return result;
    }

    var $inputs = DOMUtil.getElementsByClassName('input-text');
    DOMUtil.getElementsByClassName('input-button')[0].onclick = function(){
        var num1 = +($inputs[0].value)|| 0;
        var num2 = +($inputs[1].value)|| 0;
        var num3 = +($inputs[2].value)|| 0;
        var num4 = +($inputs[3].value)|| 0;                
        var arr = calc24(num1,num2,num3,num4);
        var str = arr.length?'':'不能够计算得到!';
        for(var i = arr.length;i--;){
            str += arr[i]+'\n';
        }
        document.getElementsByTagName('TEXTAREA')[0].value = str; 
    }
})();
复制代码

 

posted on   z5337  阅读(254)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示