board.js
changeset 139 4dde63ac0bb4
parent 121 b7b5e4a03e4b
child 145 bf3d47ecd0dd
child 148 93c122e0ea90
--- a/board.js	Thu Sep 25 01:10:01 2014 +0300
+++ b/board.js	Thu Sep 25 02:05:48 2014 +0300
@@ -119,6 +119,26 @@
 }
 /** Compare boards. */
 BoardArr2d.prototype.equals = BoardArr2d.prototype.equals_unrolled;
+BoardArr2d.prototype.compress = function() {
+    var brd = this.brd;
+    var h1 = brd[0][0];
+    h1 = (h1 << 4) | brd[0][1];
+    h1 = (h1 << 4) | brd[0][2];
+    h1 = (h1 << 4) | brd[0][3];
+    h1 = (h1 << 4) | brd[1][0];
+    h1 = (h1 << 4) | brd[1][1];
+    h1 = (h1 << 4) | brd[1][2];
+    h1 = (h1 << 4) | brd[1][3];
+    var h2 = brd[2][0];
+    h2 = (h2 << 4) | brd[2][1];
+    h2 = (h2 << 4) | brd[2][2];
+    h2 = (h2 << 4) | brd[2][3];
+    h2 = (h2 << 4) | brd[3][0];
+    h2 = (h2 << 4) | brd[3][1];
+    h2 = (h2 << 4) | brd[3][2];
+    h2 = (h2 << 4) | brd[3][3];
+    return [h1, h2];
+}
 
 /* Return and optionally fill 2d board. */
 BoardArr2d.prototype.exportTo = function(brd) {
@@ -812,6 +832,26 @@
         && self.db == brd.db && self.dc == brd.dc
         && self.bb == brd.bb && self.bc == brd.bc && self.cb == brd.cb && self.cc == brd.cc;
 };
+BoardObj.prototype.compress = function() {
+    var brd = this.brd;
+    var h1 = brd.aa;
+    h1 = (h1 << 4) | brd.ab;
+    h1 = (h1 << 4) | brd.ac;
+    h1 = (h1 << 4) | brd.ad;
+    h1 = (h1 << 4) | brd.ba;
+    h1 = (h1 << 4) | brd.bb;
+    h1 = (h1 << 4) | brd.bc;
+    h1 = (h1 << 4) | brd.bd;
+    var h2 = brd.ca;
+    h2 = (h2 << 4) | brd.cb;
+    h2 = (h2 << 4) | brd.cc;
+    h2 = (h2 << 4) | brd.cd;
+    h2 = (h2 << 4) | brd.da;
+    h2 = (h2 << 4) | brd.db;
+    h2 = (h2 << 4) | brd.dc;
+    h2 = (h2 << 4) | brd.dd;
+    return [h1, h2];
+}
 BoardObj.prototype.copy = function(brd) {
     var self = this.brd;
     if ( ! brd) {