117 && x1[0] === y1[0] && x1[1] === y1[1] && x1[2] === y1[2] && x1[3] === y1[3] |
117 && x1[0] === y1[0] && x1[1] === y1[1] && x1[2] === y1[2] && x1[3] === y1[3] |
118 && x2[0] === y2[0] && x2[1] === y2[1] && x2[2] === y2[2] && x2[3] === y2[3]; |
118 && x2[0] === y2[0] && x2[1] === y2[1] && x2[2] === y2[2] && x2[3] === y2[3]; |
119 } |
119 } |
120 /** Compare boards. */ |
120 /** Compare boards. */ |
121 BoardArr2d.prototype.equals = BoardArr2d.prototype.equals_unrolled; |
121 BoardArr2d.prototype.equals = BoardArr2d.prototype.equals_unrolled; |
|
122 BoardArr2d.prototype.compress = function() { |
|
123 var brd = this.brd; |
|
124 var h1 = brd[0][0]; |
|
125 h1 = (h1 << 4) | brd[0][1]; |
|
126 h1 = (h1 << 4) | brd[0][2]; |
|
127 h1 = (h1 << 4) | brd[0][3]; |
|
128 h1 = (h1 << 4) | brd[1][0]; |
|
129 h1 = (h1 << 4) | brd[1][1]; |
|
130 h1 = (h1 << 4) | brd[1][2]; |
|
131 h1 = (h1 << 4) | brd[1][3]; |
|
132 var h2 = brd[2][0]; |
|
133 h2 = (h2 << 4) | brd[2][1]; |
|
134 h2 = (h2 << 4) | brd[2][2]; |
|
135 h2 = (h2 << 4) | brd[2][3]; |
|
136 h2 = (h2 << 4) | brd[3][0]; |
|
137 h2 = (h2 << 4) | brd[3][1]; |
|
138 h2 = (h2 << 4) | brd[3][2]; |
|
139 h2 = (h2 << 4) | brd[3][3]; |
|
140 return [h1, h2]; |
|
141 } |
122 |
142 |
123 /* Return and optionally fill 2d board. */ |
143 /* Return and optionally fill 2d board. */ |
124 BoardArr2d.prototype.exportTo = function(brd) { |
144 BoardArr2d.prototype.exportTo = function(brd) { |
125 brd = brd || [[],[],[],[]]; |
145 brd = brd || [[],[],[],[]]; |
126 for (var i = 0; i < 4; i++) |
146 for (var i = 0; i < 4; i++) |
810 && self.ba == brd.ba && self.ca == brd.ca |
830 && self.ba == brd.ba && self.ca == brd.ca |
811 && self.bd == brd.bd && self.cd == brd.cd |
831 && self.bd == brd.bd && self.cd == brd.cd |
812 && self.db == brd.db && self.dc == brd.dc |
832 && self.db == brd.db && self.dc == brd.dc |
813 && self.bb == brd.bb && self.bc == brd.bc && self.cb == brd.cb && self.cc == brd.cc; |
833 && self.bb == brd.bb && self.bc == brd.bc && self.cb == brd.cb && self.cc == brd.cc; |
814 }; |
834 }; |
|
835 BoardObj.prototype.compress = function() { |
|
836 var brd = this.brd; |
|
837 var h1 = brd.aa; |
|
838 h1 = (h1 << 4) | brd.ab; |
|
839 h1 = (h1 << 4) | brd.ac; |
|
840 h1 = (h1 << 4) | brd.ad; |
|
841 h1 = (h1 << 4) | brd.ba; |
|
842 h1 = (h1 << 4) | brd.bb; |
|
843 h1 = (h1 << 4) | brd.bc; |
|
844 h1 = (h1 << 4) | brd.bd; |
|
845 var h2 = brd.ca; |
|
846 h2 = (h2 << 4) | brd.cb; |
|
847 h2 = (h2 << 4) | brd.cc; |
|
848 h2 = (h2 << 4) | brd.cd; |
|
849 h2 = (h2 << 4) | brd.da; |
|
850 h2 = (h2 << 4) | brd.db; |
|
851 h2 = (h2 << 4) | brd.dc; |
|
852 h2 = (h2 << 4) | brd.dd; |
|
853 return [h1, h2]; |
|
854 } |
815 BoardObj.prototype.copy = function(brd) { |
855 BoardObj.prototype.copy = function(brd) { |
816 var self = this.brd; |
856 var self = this.brd; |
817 if ( ! brd) { |
857 if ( ! brd) { |
818 var newBrd = new Object(BoardObj.prototype); |
858 var newBrd = new Object(BoardObj.prototype); |
819 newBrd.brd = { aa: self.aa, ab: self.ab, ac: self.ac, ad: self.ad, |
859 newBrd.brd = { aa: self.aa, ab: self.ab, ac: self.ac, ad: self.ad, |