836 if (brd.ba === 0) cnt++; if (brd.bb === 0) cnt++; if (brd.bc === 0) cnt++; if (brd.bd === 0) cnt++; |
836 if (brd.ba === 0) cnt++; if (brd.bb === 0) cnt++; if (brd.bc === 0) cnt++; if (brd.bd === 0) cnt++; |
837 if (brd.ca === 0) cnt++; if (brd.cb === 0) cnt++; if (brd.cc === 0) cnt++; if (brd.cd === 0) cnt++; |
837 if (brd.ca === 0) cnt++; if (brd.cb === 0) cnt++; if (brd.cc === 0) cnt++; if (brd.cd === 0) cnt++; |
838 if (brd.da === 0) cnt++; if (brd.db === 0) cnt++; if (brd.dc === 0) cnt++; if (brd.dd === 0) cnt++; |
838 if (brd.da === 0) cnt++; if (brd.db === 0) cnt++; if (brd.dc === 0) cnt++; if (brd.dd === 0) cnt++; |
839 return cnt; |
839 return cnt; |
840 } |
840 } |
|
841 BoardObj.scoreLookup = [0]; // [ 0, 4, 16, 48, 128, 320, 768, 1792, 4096, 9216, 20480, 45056, 98304]; |
|
842 (function() { |
|
843 for (var i = 1; i < 16; i++) |
|
844 BoardObj.scoreLookup[i] = (i-1)*(1 << i); |
|
845 })(); |
841 BoardObj.prototype.score = function() { |
846 BoardObj.prototype.score = function() { |
842 var score = 0; |
|
843 var brd = this.brd; |
847 var brd = this.brd; |
844 var v = brd.aa; |
848 var lookup = BoardObj.scoreLookup; |
845 if (v > 1) score += (v-1)*(1 << v); |
849 var score = lookup[brd.aa]; |
846 var v = brd.ab; |
850 score += lookup[brd.ab]; |
847 if (v > 1) score += (v-1)*(1 << v); |
851 score += lookup[brd.ac]; |
848 var v = brd.ac; |
852 score += lookup[brd.ad]; |
849 if (v > 1) score += (v-1)*(1 << v); |
853 score += lookup[brd.ba]; |
850 var v = brd.ad; |
854 score += lookup[brd.bb]; |
851 if (v > 1) score += (v-1)*(1 << v); |
855 score += lookup[brd.bc]; |
852 var v = brd.ba; |
856 score += lookup[brd.bd]; |
853 if (v > 1) score += (v-1)*(1 << v); |
857 score += lookup[brd.ca]; |
854 var v = brd.bb; |
858 score += lookup[brd.cb]; |
855 if (v > 1) score += (v-1)*(1 << v); |
859 score += lookup[brd.cc]; |
856 var v = brd.bc; |
860 score += lookup[brd.cd]; |
857 if (v > 1) score += (v-1)*(1 << v); |
861 score += lookup[brd.da]; |
858 var v = brd.bd; |
862 score += lookup[brd.db]; |
859 if (v > 1) score += (v-1)*(1 << v); |
863 score += lookup[brd.dc]; |
860 var v = brd.ca; |
864 score += lookup[brd.dd]; |
861 if (v > 1) score += (v-1)*(1 << v); |
|
862 var v = brd.cb; |
|
863 if (v > 1) score += (v-1)*(1 << v); |
|
864 var v = brd.cc; |
|
865 if (v > 1) score += (v-1)*(1 << v); |
|
866 var v = brd.cd; |
|
867 if (v > 1) score += (v-1)*(1 << v); |
|
868 var v = brd.da; |
|
869 if (v > 1) score += (v-1)*(1 << v); |
|
870 var v = brd.db; |
|
871 if (v > 1) score += (v-1)*(1 << v); |
|
872 var v = brd.dc; |
|
873 if (v > 1) score += (v-1)*(1 << v); |
|
874 var v = brd.dd; |
|
875 if (v > 1) score += (v-1)*(1 << v); |
|
876 return score; |
865 return score; |
877 } |
866 } |
878 BoardObj.prototype.max = function() { |
867 BoardObj.prototype.max = function() { |
879 var brd = this.brd; |
868 var brd = this.brd; |
880 var max = brd.aa; |
869 var max = brd.aa; |