2048.html
changeset 127 4cc0421184ac
parent 123 fc6019d22a38
child 128 673743a1290d
equal deleted inserted replaced
126:e634761d0432 127:4cc0421184ac
   801     ui.report = {};
   801     ui.report = {};
   802     ui.report.statNo = 1;
   802     ui.report.statNo = 1;
   803 
   803 
   804     ui.report.stat = function() {
   804     ui.report.stat = function() {
   805       /* console.profile(); */
   805       /* console.profile(); */
   806       var stats = [];
   806       var scoreChecked = document.getElementById('report-score').checked;
       
   807       var turnChecked = document.getElementById('report-turn').checked;
       
   808       var speedChecked = document.getElementById('report-speed').checked;
       
   809       var histo = {};
   807       var cnt = parseInt(document.getElementById('stat-count-limit').value);
   810       var cnt = parseInt(document.getElementById('stat-count-limit').value);
   808       if (isNaN(cnt) || !isFinite(cnt) || cnt < 1)
   811       if (isNaN(cnt) || !isFinite(cnt) || cnt < 1)
   809         cnt = 100;
   812         cnt = 100;
   810       var tsLimit = parseFloat(document.getElementById('stat-count-limit').value);
   813       var tsLimit = parseFloat(document.getElementById('stat-count-limit').value);
   811       if (isNaN(tsLimit) || !isFinite(tsLimit) || tsLimit < 1 || tsLimit > 60)
   814       if (isNaN(tsLimit) || !isFinite(tsLimit) || tsLimit < 1 || tsLimit > 60)
   834           board.putRandom(brd);
   837           board.putRandom(brd);
   835           turn++;
   838           turn++;
   836         }
   839         }
   837         var tsTo = new Date().getTime();
   840         var tsTo = new Date().getTime();
   838         var stat = board.score(brd);
   841         var stat = board.score(brd);
   839         stat.turn = turn;
   842         var speed = turn*1000/(tsTo - tsFrom);
   840         stat.ts = tsTo - tsFrom;
   843         var score = stat.score;
   841         stats.push(stat);
   844         var max = stat.max;
       
   845         if ( ! histo[max]) {
       
   846           histo[max] = { n: 1, minSpeed: speed, meanSpeed: speed, maxSpeed: speed, minTurn: turn, meanTurn: turn, maxTurn: turn, minScore: score, meanScore: score, maxScore: score };
       
   847         } else {
       
   848           var row = histo[max];
       
   849           row.n++;
       
   850           if (scoreChecked) {
       
   851             row.minScore = Math.min(row.minScore, score);
       
   852             row.meanScore += score;
       
   853             row.maxScore = Math.max(row.maxScore, score);
       
   854           }
       
   855         if (speedChecked) {
       
   856             row.minSpeed = Math.min(row.minSpeed, speed);
       
   857             row.meanSpeed += speed;
       
   858             row.maxSpeed = Math.max(row.maxSpeed, speed);
       
   859           }
       
   860           if (turnChecked) {
       
   861             row.minTurn = Math.min(row.minTurn, turn);
       
   862             row.meanTurn += turn;
       
   863             row.maxTurn = Math.max(row.maxTurn, turn);
       
   864           }
       
   865         }
   842         if (tsTo - tsLimitFrom >= tsLimit)
   866         if (tsTo - tsLimitFrom >= tsLimit)
   843           break;
   867           break;
   844       }
       
   845       var scoreChecked = document.getElementById('report-score').checked;
       
   846       var turnChecked = document.getElementById('report-turn').checked;
       
   847       var speedChecked = document.getElementById('report-speed').checked;
       
   848       var histo = {};
       
   849       for (i = stats.length-1; i >= 0; i--) {
       
   850         var stat = stats[i];
       
   851         if ( ! histo[stat.max])
       
   852           histo[stat.max] = { n: 0, minSpeed: Infinity, meanSpeed: 0, maxSpeed: 0, minTurn: Infinity, meanTurn: 0, maxTurn: 0, minScore: Infinity, meanScore: 0, maxScore: 0 };
       
   853         var row = histo[stat.max];
       
   854         row.n++;
       
   855         if (scoreChecked) {
       
   856           row.minScore = Math.min(row.minScore, stat.score);
       
   857           row.meanScore += stat.score;
       
   858           row.maxScore = Math.max(row.maxScore, stat.score);
       
   859         }
       
   860         if (turnChecked) {
       
   861           row.minTurn = Math.min(row.minTurn, stat.turn);
       
   862           row.meanTurn += stat.turn;
       
   863           row.maxTurn = Math.max(row.maxTurn, stat.turn);
       
   864         }
       
   865         if (speedChecked) {
       
   866           var speed = (stat.turn * 1000.0) / stat.ts;
       
   867           row.minSpeed = Math.min(row.minSpeed, speed);
       
   868           row.meanSpeed += speed;
       
   869           row.maxSpeed = Math.max(row.maxSpeed, speed);
       
   870         }
       
   871       }
   868       }
   872       for (var i in histo) {
   869       for (var i in histo) {
   873         var row = histo[i];
   870         var row = histo[i];
   874         var n = row.n;
   871         var n = row.n;
   875         if (scoreChecked)
   872         if (scoreChecked)