From 7072f8d9893cbcaf30b12c92597433e729af887d Mon Sep 17 00:00:00 2001 From: cj dagostino Date: Mon, 7 Oct 2019 17:25:10 -0400 Subject: [PATCH] added flipVertical --- LICENSE.md | 21 ++++++++++++++++ bitboards.js | 39 ++++++++++++++++++++++------- bitboards.js.map | 2 +- bitboards.ts | 46 ++++++++++++++++++++++++++--------- src/BitBoard.js | 17 +++++++++---- src/BitBoard.js.map | 2 +- src/BitBoard.ts | 20 ++++++++++----- src/__test__/BitBoard.test.js | 27 ++++++++++++++++---- tset.js | 1 + 9 files changed, 137 insertions(+), 38 deletions(-) create mode 100644 LICENSE.md create mode 100644 tset.js diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..5c685bf --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 Cj D'Agostino + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bitboards.js b/bitboards.js index b4246c1..f6d41f7 100644 --- a/bitboards.js +++ b/bitboards.js @@ -26,7 +26,9 @@ var __extends = (this && this.__extends) || (function () { * @author Cj D'Agostino * * @class BitBoard - * @param {board} Array [optional] --> Must be length = 2 where each number n must be: 0 <= n <= 2 ^ 32 - 1 + * @param {board} Array | string [optional] + * --> Must be length = 2 where each number n must be: 0 <= n <= 2 ^ 32 - 1 + * --> Or a string of length 1 to 64 zeros and ones * @exports BitBoard * * NOTE @@ -43,13 +45,20 @@ var __extends = (this && this.__extends) || (function () { this.length = 64; this.board; if (board) { - if (!Array.isArray(board) || board.some(function (x) { return typeof x !== 'number'; })) { - throw new TypeError('board must be an array'); + if (typeof board === 'string') { + if (board.split('').some(function (n) { return n !== '0' && n !== '1'; }) || board.length > this.length) { + throw new SyntaxError('Inputs to board as a string must be between 1 and 64 zeroes and ones'); + } + var left = board.length > 32 ? parseInt(board.slice(0, board.length - 32), 2) : 0; + var right = board.length > 32 ? parseInt(board.slice(32), 2) : parseInt(board, 2); + this.board = [left, right]; } - else if (board.length !== 2 || board.some(function (x) { return Math.floor(x) !== x || x < 0 || x >= _this.MAX_BITS; })) { - throw new RangeError('inputs to board array must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); + else if (Array.isArray(board)) { + if (board.some(function (x) { return typeof x !== 'number'; }) || board.length !== 2 || board.some(function (x) { return Math.floor(x) !== x || x < 0 || x >= _this.MAX_BITS; })) { + throw new Error('array inputs to board must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); + } + this.board = board; } - this.board = board; } else { this.board = [0, 0]; @@ -136,7 +145,7 @@ var __extends = (this && this.__extends) || (function () { } return newBoard; } - throw new TypeError('Invalid input. Must be of type "BitBoard" or "number"'); + throw new TypeError('Invalid input. Must be of type BitBoard'); }; /** * @method @@ -153,7 +162,7 @@ var __extends = (this && this.__extends) || (function () { } return newBoard; } - throw new TypeError('Invalid input. Must be of type "BitBoard" or "number"'); + throw new TypeError('Invalid input. Must be of type BitBoard'); }; /** * @method @@ -310,6 +319,18 @@ var __extends = (this && this.__extends) || (function () { } throw new TypeError('Invalid input. Must be "number"'); }; + BitBoard.prototype.filpVertical = function (modify) { + if (modify === void 0) { modify = false; } + var newBoard = modify ? this : this.copy(); + var maskA = new BitBoard([16711935, 16711935]); + // maskA --> "0000000011111111000000001111111100000000111111110000000011111111" + var maskB = new BitBoard([65535, 65535]); + // maskB --> "0000000000000000111111111111111100000000000000001111111111111111" + newBoard = newBoard.shiftRight(8).and(maskA).or(newBoard.and(maskA).shiftLeft(8)); + newBoard = newBoard.shiftRight(16).and(maskB).or(newBoard.and(maskB).shiftLeft(16)); + newBoard = newBoard.shiftRight(32).or(newBoard.shiftLeft(32)); + return newBoard; + }; return BitBoard; }()); exports.BitBoard = BitBoard; @@ -408,7 +429,7 @@ var __extends = (this && this.__extends) || (function () { _this = _super.call(this, input.board) || this; // this.board = custom input } else { - _this = _super.call(this) || this; // this.board = [0, 0]; + _this = _super.call(this, input) || this; // this.board = [0, 0]; } return _this; } diff --git a/bitboards.js.map b/bitboards.js.map index 17713ba..34e7f54 100644 --- a/bitboards.js.map +++ b/bitboards.js.map @@ -1 +1 @@ -{"version":3,"file":"bitboards.js","sourceRoot":"","sources":["bitboards.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bitboards.js","sourceRoot":"","sources":["bitboards.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/bitboards.ts b/bitboards.ts index 1321e67..14cbf0f 100644 --- a/bitboards.ts +++ b/bitboards.ts @@ -2,7 +2,9 @@ * @author Cj D'Agostino * * @class BitBoard - * @param {board} Array [optional] --> Must be length = 2 where each number n must be: 0 <= n <= 2 ^ 32 - 1 + * @param {board} Array | string [optional] + * --> Must be length = 2 where each number n must be: 0 <= n <= 2 ^ 32 - 1 + * --> Or a string of length 1 to 64 zeros and ones * @exports BitBoard * * NOTE @@ -18,20 +20,28 @@ class BitBoard { private readonly BITS_PER_BUCKET: number; private readonly MAX_BITS: number; - constructor(board?: Array) { + constructor(board?: Array | string) { this.MAX_BITS = 4294967296; // (2 ^ 32) this.BITS_PER_BUCKET = 32; this.length = 64; this.board; if (board) { - if (!Array.isArray(board) || board.some(x => typeof x !== 'number')) { - throw new TypeError('board must be an array'); - } else if (board.length !== 2 || board.some(x => Math.floor(x) !== x || x < 0 || x >= this.MAX_BITS)) { - throw new RangeError('inputs to board array must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); + if (typeof board === 'string') { + if (board.split('').some(n => n !== '0' && n !== '1') || board.length > this.length) { + throw new SyntaxError('Inputs to board as a string must be between 1 and 64 zeroes and ones') + } + const left = board.length > 32 ? parseInt(board.slice(0, board.length - 32), 2) : 0; + const right = board.length > 32 ? parseInt(board.slice(32), 2) : parseInt(board, 2); + this.board = [left, right]; + + } else if (Array.isArray(board)) { + if (board.some(x => typeof x !== 'number') || board.length !== 2 || board.some(x => Math.floor(x) !== x || x < 0 || x >= this.MAX_BITS)) { + throw new Error('array inputs to board must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); } this.board = board; - } else { + } + } else { this.board = [0, 0]; } } @@ -128,7 +138,7 @@ class BitBoard { } return newBoard; } - throw new TypeError('Invalid input. Must be of type "BitBoard" or "number"'); + throw new TypeError('Invalid input. Must be of type BitBoard'); } /** @@ -146,7 +156,7 @@ class BitBoard { } return newBoard; } - throw new TypeError('Invalid input. Must be of type "BitBoard" or "number"'); + throw new TypeError('Invalid input. Must be of type BitBoard'); } /** @@ -303,6 +313,20 @@ class BitBoard { } throw new TypeError('Invalid input. Must be "number"'); } + + filpVertical(modify: boolean = false) { + let newBoard: BitBoard = modify ? this : this.copy(); + let maskA = new BitBoard([16711935, 16711935]); + // maskA --> "0000000011111111000000001111111100000000111111110000000011111111" + let maskB = new BitBoard([65535, 65535]); + // maskB --> "0000000000000000111111111111111100000000000000001111111111111111" + + newBoard = newBoard.shiftRight(8).and(maskA).or(newBoard.and(maskA).shiftLeft(8)); + newBoard = newBoard.shiftRight(16).and(maskB).or(newBoard.and(maskB).shiftLeft(16)); + newBoard = newBoard.shiftRight(32).or(newBoard.shiftLeft(32)); + + return newBoard; + } } /** @@ -368,7 +392,7 @@ interface BitBoardInputDictionary { */ class ChessBitBoard extends BitBoard { - constructor(input: BitBoardInputDictionary) { + constructor(input) { if (input && input.boardType) { switch (input.boardType) { case 'piece': @@ -404,7 +428,7 @@ class ChessBitBoard extends BitBoard { } else if (input && input.board) { super(input.board); // this.board = custom input } else { - super(); // this.board = [0, 0]; + super(input); // this.board = [0, 0]; } } } diff --git a/src/BitBoard.js b/src/BitBoard.js index 8c98d9e..904c321 100644 --- a/src/BitBoard.js +++ b/src/BitBoard.js @@ -29,13 +29,20 @@ this.length = 64; this.board; if (board) { - if (!Array.isArray(board) || board.some(function (x) { return typeof x !== 'number'; })) { - throw new TypeError('board must be an array'); + if (typeof board === 'string') { + if (board.split('').some(function (n) { return ['0', '1'].indexOf(n) === -1; }) || board.length > this.length) { + throw new SyntaxError('Inputs to board as a string must be between 1 and 64 zeroes and ones.'); + } + var left = board.length > 32 ? parseInt(board.slice(0, board.length - 32), 2) : 0; + var right = parseInt(board.slice(32), 2); + this.board = [left, right]; } - else if (board.length !== 2 || board.some(function (x) { return Math.floor(x) !== x || x < 0 || x >= _this.MAX_BITS; })) { - throw new RangeError('inputs to board array must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); + else if (Array.isArray(board)) { + if (board.some(function (x) { return typeof x !== 'number'; }) || board.length !== 2 || board.some(function (x) { return Math.floor(x) !== x || x < 0 || x >= _this.MAX_BITS; })) { + throw new RangeError('array inputs to board must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); + } + this.board = board; } - this.board = board; } else { this.board = [0, 0]; diff --git a/src/BitBoard.js.map b/src/BitBoard.js.map index dfeba30..9bb5a4b 100644 --- a/src/BitBoard.js.map +++ b/src/BitBoard.js.map @@ -1 +1 @@ -{"version":3,"file":"BitBoard.js","sourceRoot":"","sources":["BitBoard.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BitBoard.js","sourceRoot":"","sources":["BitBoard.ts"],"names":[],"mappings":";;;;;;;;;;IAAA;;;;;;;;;;;;MAYE;IACF;QAOE,kBAAY,KAA8B;YAA1C,iBAwBC;YAvBC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,WAAW;YACvC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC;YAEX,IAAI,KAAK,EAAE;gBACT,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAA5B,CAA4B,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;wBACzF,MAAM,IAAI,WAAW,CAAC,uEAAuE,CAAC,CAAA;qBAC/F;oBACD,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpF,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC3C,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAE5B;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,QAAQ,EAArB,CAAqB,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAI,CAAC,QAAQ,EAAlD,CAAkD,CAAC,EAAE;wBACvI,MAAM,IAAI,UAAU,CAAC,qFAAqF,CAAC,CAAC;qBAC7G;oBACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBACpB;aACF;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACrB;QACH,CAAC;QAED;;;;WAIG;QACH,sCAAmB,GAAnB,UAAoB,EAAY;YAAhC,iBAUC;YATC,IAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAE7C,IAAM,iBAAiB,GAAY,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC;YACpF,IAAM,uBAAuB,GAAG,KAAK,CAAC,KAAK,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAvE,CAAuE,CAAC,CAAC;YAC7H,IAAM,oBAAoB,GAAY,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACzG,IAAM,mBAAmB,GAAY,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;gBAC1D,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAA3E,CAA2E,CAAC,CAAC;YAEnG,OAAO,uBAAuB,IAAI,oBAAoB,IAAI,mBAAmB,IAAI,iBAAiB,CAAC;QACrG,CAAC;QAED;;;WAGG;QACH,2BAAQ,GAAR;YACE,IAAI,GAAG,GAAG,EAAE,CAAC;YAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,GAAG,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;aACtF;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED;;;;WAIG;QACH,2BAAQ,GAAR,UAAS,KAAa;YACpB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;gBAEpE,IAAM,QAAQ,GAAW,SAAA,CAAC,EAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAA,CAAC;gBAC7D,IAAM,YAAY,GAAW,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAEjE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE;YACD,MAAM,IAAI,UAAU,CAAC,mEAAmE,CAAC,CAAC;QAC5F,CAAC;QAED;;;WAGG;QACH,uBAAI,GAAJ;YACE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;QAGD,0BAAO,GAAP;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED;;;;;WAKG;QACH,sBAAG,GAAH,UAAI,EAAY,EAAE,MAAuB;YAAvB,uBAAA,EAAA,cAAuB;YACvC,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE;gBAChC,IAAI,QAAQ,GAAa,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;iBAC7D;gBACD,OAAO,QAAQ,CAAC;aACjB;YACD,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;QACjE,CAAC;QAED;;;;;WAKG;QACH,qBAAE,GAAF,UAAG,EAAY,EAAE,MAAuB;YAAvB,uBAAA,EAAA,cAAuB;YACtC,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE;gBAChC,IAAI,QAAQ,GAAa,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;iBAC7D;gBACD,OAAO,QAAQ,CAAC;aACjB;YACD,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAC/E,CAAC;QAED;;;;;WAKG;QACH,sBAAG,GAAH,UAAI,EAAY,EAAE,MAAuB;YAAvB,uBAAA,EAAA,cAAuB;YACvC,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE;gBAChC,IAAI,QAAQ,GAAa,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;iBAC7D;gBACD,OAAO,QAAQ,CAAC;aACjB;YACD,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAC/E,CAAC;QAED;;;;;;WAMG;QACH,2BAAQ,GAAR,UAAS,WAAuB,EAAE,GAAe,EAAE,MAAuB;YAAjE,4BAAA,EAAA,eAAuB;YAAE,oBAAA,EAAA,OAAe;YAAE,uBAAA,EAAA,cAAuB;YACxE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAE9D,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;oBACpF,IAAI,QAAQ,GAAa,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAErD,IAAM,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAChF,IAAM,cAAc,GAAG,CAAC,WAAW,GAAG,CAAC,SAAA,CAAC,EAAI,EAAE,CAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC3D,IAAM,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;oBAE1D,IAAI,WAAW,KAAK,EAAE,EAAE;wBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;qBACrD;yBAAM,IAAI,WAAW,KAAK,CAAC,EAAE;wBAC5B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;qBAChE;yBAAM,IAAI,WAAW,GAAG,EAAE,IAAI,WAAW,GAAG,EAAE,EAAE;wBAC/C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;qBAChE;yBAAM;wBACL,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC/D,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;qBAChE;oBAED,OAAO,QAAQ,CAAC;iBACjB;gBACD,MAAM,IAAI,UAAU,CAAC,iDAAiD,CAAC,CAAA;aACxE;YACD,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC/D,CAAC;QAED;;;;;;WAMG;QACH,4BAAS,GAAT,UAAU,WAAuB,EAAE,GAAe,EAAE,MAAuB;YAAjE,4BAAA,EAAA,eAAuB;YAAE,oBAAA,EAAA,OAAe;YAAE,uBAAA,EAAA,cAAuB;YACzE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAE9D,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;oBACpF,IAAI,QAAQ,GAAa,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAErD,IAAM,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBACjF,IAAM,cAAc,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBACnE,IAAM,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;oBAE1D,IAAI,WAAW,KAAK,EAAE,EAAE;wBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;qBACrD;yBAAM,IAAI,WAAW,KAAK,CAAC,EAAE;wBAC5B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;qBAChE;yBAAM,IAAI,WAAW,GAAG,EAAE,EAAE;wBAC3B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;qBAChE;yBAAM;wBACL,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC/D,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;qBAChE;oBAED,OAAO,QAAQ,CAAC;iBACjB;gBACD,MAAM,IAAI,UAAU,CAAC,iDAAiD,CAAC,CAAA;aACxE;YACD,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC/D,CAAC;QAED;;;;WAIG;QACH,sBAAG,GAAH,UAAI,MAAuB;YAAvB,uBAAA,EAAA,cAAuB;YACzB,IAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAE7C,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtD,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAChD;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED;;;;;WAKG;QACH,4BAAS,GAAT,UAAU,WAAmB,EAAE,MAAuB;YAAvB,uBAAA,EAAA,cAAuB;YACpD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBACnC,IAAI,WAAW,IAAI,CAAC,EAAE;oBAEpB,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAE3C,IAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC/F,IAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,CAAC;oBAEnG,IAAI,WAAW,KAAK,IAAI,CAAC,eAAe,EAAE;wBACxC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;qBACjC;yBAAM,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;wBAC1E,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;wBACtF,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACvB;yBAAM,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE;wBACrC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACvB;yBAAM;wBACL,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC7D,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;qBACtF;oBAED,OAAO,QAAQ,CAAC;iBACjB;gBACD,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;aAC3D;YACD,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACzD,CAAC;QAED;;;;;WAKG;QACH,6BAAU,GAAV,UAAW,WAAmB,EAAE,MAAuB;YAAvB,uBAAA,EAAA,cAAuB;YACrD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBACnC,IAAI,WAAW,IAAI,CAAC,EAAE;oBACpB,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAE3C,IAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC/F,IAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBAExG,IAAI,WAAW,KAAK,IAAI,CAAC,eAAe,EAAE;wBACxC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;qBACjC;yBAAM,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;wBAC1E,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;wBACvF,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACvB;yBAAM,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE;wBACrC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACvB;yBAAM;wBACL,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC9D,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC/E;oBAED,OAAO,QAAQ,CAAC;iBACjB;gBACD,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;aAC3D;YACD,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACzD,CAAC;QACH,eAAC;IAAD,CAAC,AA5SD,IA4SC;IAED;;;;;;;OAOG;IACH,SAAS,SAAS,CAAC,GAAW,EAAE,MAAc,EAAE,QAAgB,EAAE,KAAc;QAC9E,IAAI,KAAK,EAAE;YACT,KAAK,IAAI,CAAC,GAAW,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;aACtB;SACF;aAAM;YACL,KAAK,IAAI,CAAC,GAAW,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,GAAG,IAAI,QAAQ,CAAC;aACjB;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/src/BitBoard.ts b/src/BitBoard.ts index 04c85b0..9a4e35a 100644 --- a/src/BitBoard.ts +++ b/src/BitBoard.ts @@ -18,20 +18,28 @@ class BitBoard { private readonly BITS_PER_BUCKET: number; private readonly MAX_BITS: number; - constructor(board?: Array) { + constructor(board?: Array | string) { this.MAX_BITS = 4294967296; // (2 ^ 32) this.BITS_PER_BUCKET = 32; this.length = 64; this.board; if (board) { - if (!Array.isArray(board) || board.some(x => typeof x !== 'number')) { - throw new TypeError('board must be an array'); - } else if (board.length !== 2 || board.some(x => Math.floor(x) !== x || x < 0 || x >= this.MAX_BITS)) { - throw new RangeError('inputs to board array must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); + if (typeof board === 'string') { + if (board.split('').some(n => ['0', '1'].indexOf(n) === -1) || board.length > this.length) { + throw new SyntaxError('Inputs to board as a string must be between 1 and 64 zeroes and ones.') + } + const left = board.length > 32 ? parseInt(board.slice(0, board.length - 32), 2) : 0; + const right = parseInt(board.slice(32), 2); + this.board = [left, right]; + + } else if (Array.isArray(board)) { + if (board.some(x => typeof x !== 'number') || board.length !== 2 || board.some(x => Math.floor(x) !== x || x < 0 || x >= this.MAX_BITS)) { + throw new RangeError('array inputs to board must be two integers x where 0 <= x < 2 ^ 32 (or 4294967296)'); } this.board = board; - } else { + } + } else { this.board = [0, 0]; } } diff --git a/src/__test__/BitBoard.test.js b/src/__test__/BitBoard.test.js index ed3c24d..56351bf 100644 --- a/src/__test__/BitBoard.test.js +++ b/src/__test__/BitBoard.test.js @@ -5,13 +5,30 @@ describe('BitBoard', () => { describe('errors', () => { describe('constructor', () => { - it('throws a Type Error for parameters not equal to an array of numbers', () => { - expect(() => new BitBoard('a')).toThrow(TypeError); - expect(() => new BitBoard(['a'])).toThrow(TypeError); + + describe('board type is array', () => { + it('throws a Type Error for parameters not equal to an array of numbers', () => { + expect(() => new BitBoard(['a'])).toThrow(Error); + }) + + it('throws Range Error for values less than zero or greater than 2 ^ 32 - 1', () => { + expect(() => new BitBoard([0, -1])).toThrow(Error); + expect(() => new BitBoard([0, Math.pow(2, 32)])).toThrow(Error); + }); }) + + describe('board type is string', () => { + it('throws Syntax Error for strings greater than 64 characters', () => { + expect(() => new BitBoard('0'.repeat(65))).toThrow(SyntaxError); + }); + + it('throws Syntax Error for strings contain characters other than 1s or 0s', () => { + expect(() => new BitBoard('a')).toThrow(SyntaxError); + }); - it('throws Range Error for values less than zero xOr greater than 255', () => { - expect(() => new BitBoard([257, -1])).toThrow(RangeError); + it('does not throw error for strings equal to 64 1s and 0s', () => { + expect(() => new BitBoard('0'.repeat(64))).not.toThrow(SyntaxError); + }); }); }); diff --git a/tset.js b/tset.js new file mode 100644 index 0000000..4a1babf --- /dev/null +++ b/tset.js @@ -0,0 +1 @@ +const { BitBoard } = require('./bitboards');