彩票预测以及EXCEL历史数据匹配正确(纯js)

来源:互联网 发布:mysql 添加字符串 编辑:程序博客网 时间:2024/06/17 19:34
<html><head></head><script src="https://cdn.bootcss.com/xlsx/0.11.10/xlsx.core.min.js"></script><body><style>.ipt{width:50px;}.content{margin: 0 auto;width: 300px;}#pop{min-height: 360px;min-width: 300px;}#demo,#demoD{height: 200px;width: 300px;overflow: scroll;}</style><body><div class="content"><p>验证往期号码准确率</p><input type="file" onchange="importf(this)" />        <textarea id="demo"></textarea>        <button id="copy">一键复制正确1错误0</button>        <textarea id="demoD"></textarea>        <button id="copyD">一键复制胆码</button>        <p>最大正确连续数:<span id="maxRight"></span>最大失败连续数:<span id="maxFalse"></span></p>        <p>请在下方填入上期号码</p><input class="ipt" type="text" /><input class="ipt" type="text" /><input class="ipt" type="text" /><input class="ipt" type="text" /><input class="ipt" type="text" /><button style="margin-top:10px" id="btn">确定</button><p>下一期预测三胆:<span id="answer"></span></p><p>预测号码如下:</p><textarea id="pop"></textarea></div></body><script>//copyvar copy = document.getElementById("copy");var copyD = document.getElementById("copyD");var Url2=document.getElementById("demo");var Url3=document.getElementById("demoD");copy.onclick=function(){Url2.select(); // 选择对象document.execCommand("Copy"); // 执行浏览器复制命令alert("已复制好,可贴粘。");}copyD.onclick=function(){console.log(Url3.value);Url3.select(); // 选择对象document.execCommand("Copy"); // 执行浏览器复制命令alert("已复制好,可贴粘。");}//数组比较是否有相同function arrCheckG(arr1,arr2){var arr3=[];for(var s in arr1){    for(var x in arr2){        if(arr1[s]==arr2[x]){            arr3.push(arr1[s]);        }    }}if(arr3.length!=0){return 1;}else{return 0;}}//判断连续个数function unBrokenNumOne(str){var s = (str+"").split(""),arr = [];var max = 0,maxNum = 0;for(var i = 0;i<(str+"").split("").length;i++){arr[i] = (str+"").split("")[i];if(arr[i] == "1"){max += 1;}if(arr[i] == "0"){max = 0;}maxNum = max > maxNum?max:maxNum;}return maxNum;}function unBrokenNumZero(str){var s = (str+"").split(""),arr = [];var max = 0,maxNum = 0;for(var i = 0;i<(str+"").split("").length;i++){arr[i] = (str+"").split("")[i];if(arr[i] == "0"){max += 1;}if(arr[i] == "1"){max = 0;}maxNum = max > maxNum?max:maxNum;}return maxNum;}            /*            FileReader共有4种读取方法:            1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。            2.readAsBinaryString(file):将文件读取为二进制字符串            3.readAsDataURL(file):将文件读取为Data URL            4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'                         */            var wb;//读取完成的数据            var rABS = false; //是否将文件读取为二进制字符串            function importf(obj) {//导入                if(!obj.files) {                    return;                }                var f = obj.files[0];                var reader = new FileReader();                reader.onload = function(e) {                    var data = e.target.result;                    if(rABS) {                        wb = XLSX.read(btoa(fixdata(data)), {//手动转化                            type: 'base64'                        });                    } else {                        wb = XLSX.read(data, {                            type: 'binary'                        });                    }                    //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字                    //wb.Sheets[Sheet名]获取第一个Sheet的数据                    var key = JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) ),                    numKey = key.split('key').length - 1,                    keyArr = [],                    str = "";                    //5位数                    var five = [];                    //被验证的下一个数                    var checkNum = "",                    checkNumArr = [];                    //校验后的返回值                    var returnStr = "",                    returnStrDD = "",                    returnStrArr = [];                    //校验结果,0.1表示                    var endCheck = "",                    endCheckNum = "";                    for(var i = 1;i<=numKey;i++){                    str = key.split('key')[i].split('"}')[0].split('":"')[1]+"";                    keyArr = [parseInt(str.split("")[0]),parseInt(str.split("")[1]),parseInt(str.split("")[2]),parseInt(str.split("")[3]),parseInt(str.split("")[4])];                                        if(i != numKey){                    checkNum = key.split('key')[i+1].split('"}')[0].split('":"')[1]+"";                    checkNumArr = [parseInt(checkNum.split("")[2]),parseInt(checkNum.split("")[3]),parseInt(checkNum.split("")[4])];                    }                    //算5位数                    five = sumArr(keyArr);                    //算三胆出数                    returnStr = chooseNum(five,8)+"";                                        returnStrArr = [parseInt(returnStr.split("")[0]),parseInt(returnStr.split("")[1]),parseInt(returnStr.split("")[2])];                                        //danma                    returnStrDD += returnStr + "\n";                                        endCheck += arrCheckG(returnStrArr,checkNumArr) + "\n";                    endCheckNum += arrCheckG(returnStrArr,checkNumArr);                    //比较returnStr和CheckNumArr是否有相同元素,如果有,则匹配成功,正确                    //                                                          //变量用完置空                    keyArr = [];                    returnStr = "";                    checkNumArr= "";                    returnStrArr = [];                    five = [];                    }                    document.getElementById("demo").value= endCheck;                    document.getElementById("demoD").value= returnStrDD;                                        document.getElementById("maxRight").innerHTML = unBrokenNumOne(endCheckNum);                    document.getElementById("maxFalse").innerHTML = unBrokenNumZero(endCheckNum);                    //                  console.log(endCheckNum);                };                if(rABS) {                    reader.readAsArrayBuffer(f);                } else {                    reader.readAsBinaryString(f);                }            }            function fixdata(data) { //文件流转BinaryString                var o = "",                    l = 0,                    w = 10240;                for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));                o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));                return o;            }var btn = document.getElementById('btn'),    answer = document.getElementById('answer'),pop = document.getElementById('pop');btn.onclick=function(){var itp1 = document.getElementsByClassName('ipt')[0].value,itp2 = document.getElementsByClassName('ipt')[1].value,itp3 = document.getElementsByClassName('ipt')[2].value,itp4 = document.getElementsByClassName('ipt')[3].value,itp5 = document.getElementsByClassName('ipt')[4].value;var bArray = [parseInt(itp1),parseInt(itp2),parseInt(itp3),parseInt(itp4),parseInt(itp5)];var endArr = sumArr(bArray);chooseNum(endArr)}function chooseNumNoThree(endArr){//var1000个数var alist = [];var blist = [];for(var i = 0;i < 1000;i++){alist[i] = i;}//和值。三位数相加位数为endArr[0] 去掉var i = alist.length;while(i--){if(endArr[0]==(Math.floor(alist[i]/100) + Math.floor(alist[i]%100/10) + Math.floor(alist[i]%10))%10){alist.splice(i,1);}}//console.log("和值:目前还剩余"+alist.length+"注");//杀跨度。把杀跨度为endArr[2]的去掉i = alist.length;while(i--){blist.push(Math.floor(alist[i]/100));blist.push(Math.floor(alist[i]%100/10));blist.push(Math.floor(alist[i]%10));blist.sort();if((blist[2]-blist[0]) == endArr[2]){//System.out.println("杀跨度:当前去掉杀跨度为"+endArr[2]+"的数:"+alist.get(i));alist.splice(i,1);}blist = [];}//console.log("杀跨度:目前还剩余"+alist.length+"注");//杀百位。把百位为endArr[3]的去掉i = alist.length;while(i--){if(endArr[3] == Math.floor(alist[i]/100)){alist.splice(i,1);}}//console.log("杀百位:目前还剩余"+alist.length+"注");//杀十位。把十位为endArr[4]的去掉i = alist.length;while(i--){if((Math.floor(alist[i]%100/10)) == endArr[4]){alist.splice(i,1);}}//console.log("杀十位:目前还剩余"+alist.length+"注");return alist.length;}//999function chooseNum(endArr,numP){//var1000个数var alist = [];var blist = [];for(var i = 0;i < 1000;i++){alist[i] = i;}//和值。三位数相加位数为endArr[0] 去掉var i = alist.length;while(i--){if(endArr[0]==(Math.floor(alist[i]/100) + Math.floor(alist[i]%100/10) + Math.floor(alist[i]%10))%10){alist.splice(i,1);}}//console.log("和值:目前还剩余"+alist.length+"注");//杀跨度。把杀跨度为endArr[2]的去掉i = alist.length;while(i--){blist.push(Math.floor(alist[i]/100));blist.push(Math.floor(alist[i]%100/10));blist.push(Math.floor(alist[i]%10));blist.sort();if((blist[2]-blist[0]) == endArr[2]){//System.out.println("杀跨度:当前去掉杀跨度为"+endArr[2]+"的数:"+alist.get(i));alist.splice(i,1);}blist = [];}//console.log("杀跨度:目前还剩余"+alist.length+"注");//杀百位。把百位为endArr[3]的去掉i = alist.length;while(i--){if(endArr[3] == Math.floor(alist[i]/100)){alist.splice(i,1);}}//console.log("杀百位:目前还剩余"+alist.length+"注");//杀十位。把十位为endArr[4]的去掉i = alist.length;while(i--){if((Math.floor(alist[i]%100/10)) == endArr[4]){alist.splice(i,1);}}//console.log("杀十位:目前还剩余"+alist.length+"注");//去除三联123,019.....i = alist.length;while(i--){blist.push(Math.floor(alist[i]/100));blist.push(Math.floor(alist[i]%100/10));blist.push(Math.floor(alist[i]%10));blist.sort();if((blist[0]+1) == blist[1] && (blist[1]+1)==blist[2]){//System.out.println("杀跨度:当前去掉杀跨度为"+endArr[2]+"的数:"+alist.get(i));alist.splice(i,1);}if((blist[0] == 0)&&(blist[1]==1)&&(blist[2]==9)){    alist.splice(i,1);}    if((blist[0] == 0)&&(blist[1]==8)&&(blist[2]==9)){    alist.splice(i,1);}blist = [];}//console.log("去除三联:目前还剩余"+alist.length+"注");//如果三胆重复,则去除三联限制,重算var flag = false;var noThreeNum = 0;flag = threeDan(alist.length);if(flag){noThreeNum = chooseNumNoThree(endArr);if(threeDan(noThreeNum)){//判断如果三胆出来还是有重复,则做处理,把第一次的加上var kArr = [(alist.length+"").split("")[0],(alist.length+"").split("")[1],(alist.length+"").split("")[2],(noThreeNum+"").split("")[0],(noThreeNum+"").split("")[1],(noThreeNum+"").split("")[2]];kArr = arr(kArr);noThreeNum = kArr[0] + kArr[1] + kArr[2];if(kArr.length == 4){noThreeNumh = kArr[1] + kArr[2] + kArr[3];}if(kArr.length == 2){noThreeNumh = kArr[0] + kArr[1];}}}//三胆出后,根据三胆出号var pointNum = [];if(noThreeNum!=0 && Math.floor(noThreeNum/100)>0){pointNum = [(noThreeNum+"").split("")[0],(noThreeNum+"").split("")[1],(noThreeNum+"").split("")[2]];}else if(noThreeNum!=0 && Math.floor(noThreeNum/100)<0 && Math.floor(noThreeNum/10)>0){pointNum = [(noThreeNum+"").split("")[0],(noThreeNum+"").split("")[1]];}else{pointNum = [(alist.length+"").split("")[0],(alist.length+"").split("")[1],(alist.length+"").split("")[2]];}var iArr = [];var caArr = [];if(pointNum.length == 3){for(var i = 0;i<1000;i++){iArr = [(i+"").split("")[0],(i+"").split("")[1],(i+"").split("")[2]];//qu chu underfinefor(var p = 0;p<iArr.length;p++){if(typeof(iArr[p])=="undefined"){iArr[p] = 0;}}for(var k = 0;k<iArr.length;k++){if(iArr[k]==pointNum[0]||iArr[k]==pointNum[1]||iArr[k]==pointNum[2]){caArr.push(i);}}}}else{for(var i = 0;i<1000;i++){iArr = [(i+"").split("")[0],(i+"").split("")[1],(i+"").split("")[2]];//qu chu underfinefor(var p = 0;p<iArr.length;p++){if(typeof(iArr[p])=="undefined"){iArr[p] = 0;}}for(var k = 0;k<iArr.length;k++){if(iArr[k]==pointNum[0]||iArr[k]==pointNum[1]){caArr.push(i);}}}}caArr = arr(caArr);//根据noThreeNum确定显示的数值var returnAnswer = "";if(noThreeNum!=0){if(numP != 8){answer.innerHTML = noThreeNum;}returnAnswer = noThreeNum;}else{if(numP != 8){answer.innerHTML = alist.length;}returnAnswer = alist.length;}var str = "",addZero = "";for(var i = 0;i<caArr.length;i++){addZero = caArr[i];if((addZero+"").length!=3){if((addZero+"").length == 1){addZero = "00"+addZero;}if((addZero+"").length == 2){addZero = "0"+addZero;}}str += addZero +" ";}if(numP != 8){pop.value = str;}//添加返回值做教研return returnAnswer;}//去重function arr(arr) {  var result=[]  for(var i=0; i<arr.length; i++){if(result.indexOf(arr[i])==-1){  result.push(arr[i])}  }  return result;}      //判断三胆重复function threeDan(num){function arrP(arr) {  var result=[]  for(var i=0; i<arr.length; i++){if(result.indexOf(arr[i])==-1){  result.push(arr[i])}  }  return result;}   var arr = [(num+"").split("")[0],(num+"").split("")[1],(num+"").split("")[2]];var end = false;var arr2 = arrP(arr);if(arr.length!=arr2.length){end = true;}return end;}//计算5类数function sumArr(arr){var a = arr[0],b = arr[1],c = arr[2],d = arr[3],e = arr[4];//和值var heZhi = (c+d+e)%10;//跨度var arr1 = [arr[2],arr[3],arr[4]]; var kuaDu = arr[2];var min = arr[2];for(var i = 0;i<arr1.length;i++){if(arr1[i] > kuaDu){kuaDu = arr1[i];}if(arr1[i]<min){min=arr1[i]; }   // 判断最小值  }kuaDu = kuaDu - min;//杀跨度var shaKuaDu = (a+b+c+d+e)%10;//百位var bai = (c+d+e)*kuaDu;bai = parseInt((bai+"").split("")[0]);//十位var shi = (c+d+e)*kuaDu*3%10;var endArr = [heZhi,kuaDu,shaKuaDu,bai,shi];return endArr;}</script></body></html>