首页 > 其他分享 >[转]24点计算器

[转]24点计算器

时间:2023-01-05 14:26:26浏览次数:176  
标签:24 exp2 exp1 len var 计算器 operator expression

来自: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; 
    }
})();

 

标签:24,exp2,exp1,len,var,计算器,operator,expression
From: https://www.cnblogs.com/z5337/p/17027394.html

相关文章

  • [LeetCode] 2453. Destroy Sequential Targets
    Youaregivena 0-indexed array nums consistingofpositiveintegers,representingtargetsonanumberline.Youarealsogivenaninteger space.Youhave......
  • 剑指24. 反转链表
    问题链接https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/description/解题思路参考上一个题目。代码classListNode:def__init__(self,x):......
  • [LeetCode] 2244. Minimum Rounds to Complete All Tasks
    Youaregivena 0-indexed integerarray tasks,where tasks[i] representsthedifficultylevelofatask.Ineachround,youcancompleteeither2or3tas......
  • Spark生态之Alluxio学习24--分别读取HDFS和Alluxio的数据进行line count比较分析
    更多代码请见:​​https://github.com/xubo245/SparkLearning​​Spark生态之Alluxio学习版本:alluxio-1.3.0(tachyon),spark-1.5.2,hadoop-2.6.01.解释测量alluxio和hdfs哪个速......
  • [AGC024B] Backfront
    \(\mathcalLink\)可以发现,一个值只需要移动一次即可。考虑让一些值固定不动,并让其他值移动一次。可以证明,这是最优方案。考虑任意可行方案,若没有数操作次数为\(0\),显......
  • 【2022-12-24】连岳摘抄
    23:59人须有为己之心,方能克己;能克己,方能成己。                                      ......
  • (产品资源)mdyGpioAd9248Tlv5638模块
    mdyGpioAd9248Tlv5638模块放置了1个两通道的ADC(AD9248)和一个两通道的DAC(TLV5638)。AD9248的模拟输入连接器为SMA,经过单端转差分后送入AD9248。DAC的两路模拟输出经过运......
  • C语言简易计算器的两种方法
    第一种方法  函数指针数组#include<stdio.h>intadd(intx,inty){returnx+y;}intsub(intx,inty){returnx-y;}intmul(intx,inty){returnx*y;}intd......
  • P2426 删数
    P2426删数题目分析由于对于题目所得的最优删法,与删除的顺序无关,因此我们可以默认从前往后删片段。设\(dp_i\)表示删除前\(i\)个数所得到的最大价值。对于第\(i\)......
  • AT24C02数据存储+普中51单片机+江科大自化协
    1系统原理图 2现象 当按键Key1被按下时,LCD1602显示的数值加1,每按下一次,自增1;当按键Key2被按下时,LCD1602显示的数值自减1;当按键Key3被按下时,单片机将LCD1602显......