shogiops 0.2.7 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +0 -0
- package/README.md +0 -0
- package/attacks.d.ts +0 -0
- package/attacks.js +7 -7
- package/attacks.js.map +1 -1
- package/board.d.ts +3 -0
- package/board.js +31 -0
- package/board.js.map +1 -1
- package/compat.d.ts +6 -24
- package/compat.js +15 -171
- package/compat.js.map +1 -1
- package/csa.d.ts +4 -3
- package/csa.js +38 -33
- package/csa.js.map +1 -1
- package/csaUtil.d.ts +1 -1
- package/csaUtil.js +3 -3
- package/csaUtil.js.map +1 -1
- package/debug.d.ts +0 -0
- package/debug.js +29 -55
- package/debug.js.map +1 -1
- package/fen.d.ts +6 -5
- package/fen.js +53 -49
- package/fen.js.map +1 -1
- package/hand.d.ts +38 -0
- package/hand.js +74 -0
- package/hand.js.map +1 -0
- package/hash.d.ts +4 -3
- package/hash.js +9 -9
- package/hash.js.map +1 -1
- package/index.d.ts +4 -3
- package/index.js +3 -7
- package/index.js.map +1 -1
- package/kif.d.ts +5 -4
- package/kif.js +70 -65
- package/kif.js.map +1 -1
- package/kifHandicaps.d.ts +0 -0
- package/kifHandicaps.js +5 -0
- package/kifHandicaps.js.map +1 -1
- package/kifUtil.d.ts +0 -0
- package/kifUtil.js +4 -4
- package/kifUtil.js.map +1 -1
- package/package.json +9 -5
- package/setup.d.ts +2 -32
- package/setup.js +3 -74
- package/setup.js.map +1 -1
- package/shogi.d.ts +14 -7
- package/shogi.js +109 -106
- package/shogi.js.map +1 -1
- package/squareSet.d.ts +1 -5
- package/squareSet.js +0 -13
- package/squareSet.js.map +1 -1
- package/src/attacks.ts +0 -0
- package/src/board.ts +34 -0
- package/src/compat.ts +18 -197
- package/src/csa.ts +29 -21
- package/src/csaUtil.ts +3 -2
- package/src/debug.ts +25 -55
- package/src/fen.ts +42 -35
- package/src/hand.ts +94 -0
- package/src/hash.ts +8 -7
- package/src/index.ts +5 -5
- package/src/kif.ts +51 -43
- package/src/kifHandicaps.ts +5 -0
- package/src/kifUtil.ts +0 -0
- package/src/setup.ts +4 -91
- package/src/shogi.ts +75 -75
- package/src/squareSet.ts +1 -18
- package/src/transform.ts +3 -1
- package/src/types.ts +13 -16
- package/src/util.ts +2 -68
- package/src/variant.ts +44 -3
- package/src/variantUtil.ts +160 -0
- package/transform.d.ts +0 -0
- package/transform.js +3 -1
- package/transform.js.map +1 -1
- package/types.d.ts +3 -7
- package/types.js +13 -14
- package/types.js.map +1 -1
- package/util.d.ts +1 -4
- package/util.js +2 -54
- package/util.js.map +1 -1
- package/variant.d.ts +12 -1
- package/variant.js +38 -3
- package/variant.js.map +1 -1
- package/variantUtil.d.ts +13 -0
- package/variantUtil.js +160 -0
- package/variantUtil.js.map +1 -0
- package/san.d.ts +0 -6
- package/san.js +0 -135
- package/san.js.map +0 -1
- package/src/san.ts +0 -136
package/csa.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.normalizedCsaLines = exports.makeCsaVariation = exports.makeCsaMove = exports.parseCsaMoves = exports.parseCsaMove = exports.parseTags = exports.parseCsaHandicap = exports.parseCsaHeader = exports.
|
|
3
|
+
exports.normalizedCsaLines = exports.makeCsaVariation = exports.makeCsaMove = exports.parseCsaMoves = exports.parseCsaMove = exports.parseTags = exports.parseCsaHandicap = exports.parseCsaHeader = exports.makeCsaHand = exports.makeCsaBoard = exports.makeCsaHeader = exports.CsaError = exports.InvalidCsa = void 0;
|
|
4
4
|
const result_1 = require("@badrap/result");
|
|
5
5
|
const board_1 = require("./board");
|
|
6
|
-
const setup_1 = require("./setup");
|
|
7
6
|
const types_1 = require("./types");
|
|
8
7
|
const util_1 = require("./util");
|
|
9
8
|
const csaUtil_1 = require("./csaUtil");
|
|
9
|
+
const hand_1 = require("./hand");
|
|
10
|
+
const variantUtil_1 = require("./variantUtil");
|
|
11
|
+
// Olny supports standard shogi no variants
|
|
10
12
|
//
|
|
11
13
|
// CSA HEADER
|
|
12
14
|
//
|
|
@@ -15,7 +17,7 @@ var InvalidCsa;
|
|
|
15
17
|
InvalidCsa["CSA"] = "ERR_CSA";
|
|
16
18
|
InvalidCsa["Board"] = "ERR_BOARD";
|
|
17
19
|
InvalidCsa["Handicap"] = "ERR_HANDICAP";
|
|
18
|
-
InvalidCsa["
|
|
20
|
+
InvalidCsa["Hands"] = "ERR_HANDS";
|
|
19
21
|
InvalidCsa["AdditionalInfo"] = "ERR_ADDITIONAL";
|
|
20
22
|
})(InvalidCsa = exports.InvalidCsa || (exports.InvalidCsa = {}));
|
|
21
23
|
class CsaError extends Error {
|
|
@@ -25,10 +27,12 @@ exports.CsaError = CsaError;
|
|
|
25
27
|
function makeCsaHeader(setup) {
|
|
26
28
|
return [
|
|
27
29
|
makeCsaBoard(setup.board),
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
makeCsaHand(setup.hands.sente, 'P+'),
|
|
31
|
+
makeCsaHand(setup.hands.gote, 'P-'),
|
|
30
32
|
setup.turn === 'gote' ? '-' : '+',
|
|
31
|
-
]
|
|
33
|
+
]
|
|
34
|
+
.filter(p => p.length > 0)
|
|
35
|
+
.join('\n');
|
|
32
36
|
}
|
|
33
37
|
exports.makeCsaHeader = makeCsaHeader;
|
|
34
38
|
function makeCsaBoard(board) {
|
|
@@ -42,7 +46,7 @@ function makeCsaBoard(board) {
|
|
|
42
46
|
csaBoard += ' * ';
|
|
43
47
|
else {
|
|
44
48
|
const colorSign = piece.color === 'gote' ? '-' : '+';
|
|
45
|
-
csaBoard += colorSign +
|
|
49
|
+
csaBoard += colorSign + util_1.roleToCsa(piece.role);
|
|
46
50
|
}
|
|
47
51
|
if (file === 8 && rank > 0)
|
|
48
52
|
csaBoard += '\n';
|
|
@@ -51,30 +55,31 @@ function makeCsaBoard(board) {
|
|
|
51
55
|
return csaBoard;
|
|
52
56
|
}
|
|
53
57
|
exports.makeCsaBoard = makeCsaBoard;
|
|
54
|
-
function
|
|
55
|
-
if (
|
|
58
|
+
function makeCsaHand(hand, prefix) {
|
|
59
|
+
if (hand.isEmpty())
|
|
56
60
|
return '';
|
|
57
61
|
return (prefix +
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
62
|
+
variantUtil_1.handRoles('shogi')
|
|
63
|
+
.map(role => {
|
|
64
|
+
const r = util_1.roleToCsa(role);
|
|
65
|
+
const n = hand[role];
|
|
61
66
|
return ('00' + r).repeat(Math.min(n, 18));
|
|
62
67
|
})
|
|
63
68
|
.filter(p => p.length > 0)
|
|
64
69
|
.join(''));
|
|
65
70
|
}
|
|
66
|
-
exports.
|
|
71
|
+
exports.makeCsaHand = makeCsaHand;
|
|
67
72
|
// Import
|
|
68
73
|
function parseCsaHeader(csa) {
|
|
69
74
|
const lines = normalizedCsaLines(csa);
|
|
70
75
|
const handicap = lines.find(l => l.startsWith('PI'));
|
|
71
76
|
const isWholeBoard = lines.some(l => l.startsWith('P1'));
|
|
72
|
-
const baseBoard =
|
|
77
|
+
const baseBoard = util_1.defined(handicap) && !isWholeBoard ? parseCsaHandicap(handicap) : parseCsaBoard(lines.filter(l => /^P\d/.test(l)));
|
|
73
78
|
const turn = lines.some(l => l === '-') ? 'gote' : 'sente';
|
|
74
79
|
return baseBoard.chain(board => {
|
|
75
80
|
const setup = {
|
|
76
81
|
board: board,
|
|
77
|
-
|
|
82
|
+
hands: hand_1.Hands.empty(),
|
|
78
83
|
turn: turn,
|
|
79
84
|
fullmoves: 1,
|
|
80
85
|
};
|
|
@@ -86,8 +91,8 @@ function parseCsaHandicap(handicap) {
|
|
|
86
91
|
const splitted = handicap.substring(2).match(/.{4}/g) || [];
|
|
87
92
|
const intitalBoard = board_1.Board.default();
|
|
88
93
|
for (const s of splitted) {
|
|
89
|
-
const sq =
|
|
90
|
-
if (
|
|
94
|
+
const sq = csaUtil_1.parseCsaSquare(s.substring(0, 2));
|
|
95
|
+
if (util_1.defined(sq)) {
|
|
91
96
|
intitalBoard.take(sq);
|
|
92
97
|
}
|
|
93
98
|
else {
|
|
@@ -112,8 +117,8 @@ function parseCsaBoard(csaBoard) {
|
|
|
112
117
|
else {
|
|
113
118
|
if (file >= 9 || rank < 0)
|
|
114
119
|
return result_1.Result.err(new CsaError(InvalidCsa.Board));
|
|
115
|
-
const role =
|
|
116
|
-
if (
|
|
120
|
+
const role = util_1.csaToRole(s.substring(1));
|
|
121
|
+
if (util_1.defined(role) && variantUtil_1.allRoles('shogi').includes(role)) {
|
|
117
122
|
const square = file + rank * 9;
|
|
118
123
|
const piece = { role: role, color: (s.startsWith('-') ? 'gote' : 'sente') };
|
|
119
124
|
board.set(square, piece);
|
|
@@ -130,13 +135,13 @@ function parseAdditions(initialSetup, additions) {
|
|
|
130
135
|
for (const line of additions) {
|
|
131
136
|
const color = line[1] === '+' ? 'sente' : 'gote';
|
|
132
137
|
for (const sp of line.substring(2).match(/.{4}/g) || []) {
|
|
133
|
-
const sq =
|
|
134
|
-
const role =
|
|
135
|
-
if (
|
|
138
|
+
const sq = csaUtil_1.parseCsaSquare(sp.substring(0, 2));
|
|
139
|
+
const role = util_1.csaToRole(sp.substring(2, 4));
|
|
140
|
+
if (util_1.defined(sq) && util_1.defined(role)) {
|
|
136
141
|
if (sq === 0) {
|
|
137
|
-
if (!
|
|
138
|
-
return result_1.Result.err(new CsaError(InvalidCsa.
|
|
139
|
-
initialSetup.
|
|
142
|
+
if (!variantUtil_1.handRoles('shogi').includes(role))
|
|
143
|
+
return result_1.Result.err(new CsaError(InvalidCsa.Hands));
|
|
144
|
+
initialSetup.hands[color][role]++;
|
|
140
145
|
}
|
|
141
146
|
else {
|
|
142
147
|
initialSetup.board.set(sq, { role: role, color: color });
|
|
@@ -168,16 +173,16 @@ function parseCsaMove(pos, csaMove) {
|
|
|
168
173
|
if (!match)
|
|
169
174
|
return;
|
|
170
175
|
const drop = {
|
|
171
|
-
role:
|
|
172
|
-
to:
|
|
176
|
+
role: util_1.csaToRole(match[2]),
|
|
177
|
+
to: csaUtil_1.parseCsaSquare(match[1]),
|
|
173
178
|
};
|
|
174
179
|
return drop;
|
|
175
180
|
}
|
|
176
|
-
const role =
|
|
177
|
-
const orig =
|
|
181
|
+
const role = util_1.csaToRole(match[3]);
|
|
182
|
+
const orig = csaUtil_1.parseCsaSquare(match[1]);
|
|
178
183
|
return {
|
|
179
184
|
from: orig,
|
|
180
|
-
to:
|
|
185
|
+
to: csaUtil_1.parseCsaSquare(match[2]),
|
|
181
186
|
promotion: ((_a = pos.board.get(orig)) === null || _a === void 0 ? void 0 : _a.role) !== role,
|
|
182
187
|
};
|
|
183
188
|
}
|
|
@@ -197,14 +202,14 @@ function parseCsaMoves(pos, csaMoves) {
|
|
|
197
202
|
exports.parseCsaMoves = parseCsaMoves;
|
|
198
203
|
// Making CSA formatted moves
|
|
199
204
|
function makeCsaMove(pos, move) {
|
|
200
|
-
if (
|
|
201
|
-
return '00' +
|
|
205
|
+
if (types_1.isDrop(move)) {
|
|
206
|
+
return '00' + csaUtil_1.makeCsaSquare(move.to) + util_1.roleToCsa(move.role);
|
|
202
207
|
}
|
|
203
208
|
else {
|
|
204
209
|
const role = pos.board.getRole(move.from);
|
|
205
210
|
if (!role)
|
|
206
211
|
return '%ERROR';
|
|
207
|
-
return (
|
|
212
|
+
return (csaUtil_1.makeCsaSquare(move.from) + csaUtil_1.makeCsaSquare(move.to) + util_1.roleToCsa(move.promotion ? variantUtil_1.promote('shogi')(role) : role));
|
|
208
213
|
}
|
|
209
214
|
}
|
|
210
215
|
exports.makeCsaMove = makeCsaMove;
|
package/csa.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csa.js","sourceRoot":"","sources":["src/csa.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,mCAAgC;
|
|
1
|
+
{"version":3,"file":"csa.js","sourceRoot":"","sources":["src/csa.ts"],"names":[],"mappings":"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"}
|
package/csaUtil.d.ts
CHANGED
package/csaUtil.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeCsaSquare = exports.parseCsaSquare = void 0;
|
|
4
|
-
const
|
|
4
|
+
const util_1 = require("./util");
|
|
5
5
|
function parseCsaSquare(str) {
|
|
6
6
|
if (str.length !== 2)
|
|
7
7
|
return;
|
|
8
8
|
if (str === '00')
|
|
9
|
-
return 0; // for
|
|
9
|
+
return 0; // for hand
|
|
10
10
|
const file = Math.abs(str.charCodeAt(0) - '9'.charCodeAt(0));
|
|
11
11
|
const rank = Math.abs(str.charCodeAt(1) - '9'.charCodeAt(0));
|
|
12
12
|
if (file < 0 || file >= 9 || rank < 0 || rank >= 9)
|
|
@@ -15,7 +15,7 @@ function parseCsaSquare(str) {
|
|
|
15
15
|
}
|
|
16
16
|
exports.parseCsaSquare = parseCsaSquare;
|
|
17
17
|
function makeCsaSquare(sq) {
|
|
18
|
-
return (9 -
|
|
18
|
+
return (9 - util_1.squareFile(sq)).toString() + (9 - util_1.squareRank(sq));
|
|
19
19
|
}
|
|
20
20
|
exports.makeCsaSquare = makeCsaSquare;
|
|
21
21
|
//# sourceMappingURL=csaUtil.js.map
|
package/csaUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csaUtil.js","sourceRoot":"","sources":["src/csaUtil.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"csaUtil.js","sourceRoot":"","sources":["src/csaUtil.ts"],"names":[],"mappings":";;;AACA,iCAAgD;AAEhD,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,CAAC,WAAW;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO;IAC3D,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AACzB,CAAC;AAPD,wCAOC;AAED,SAAgB,aAAa,CAAC,EAAU;IACtC,OAAO,CAAC,CAAC,GAAG,iBAAU,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,iBAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAFD,sCAEC"}
|
package/debug.d.ts
CHANGED
|
File without changes
|
package/debug.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.perft = exports.dests = exports.square = exports.board = exports.piece = exports.squareSet = void 0;
|
|
4
|
-
const types_1 = require("./types");
|
|
5
4
|
const util_1 = require("./util");
|
|
6
5
|
const fen_1 = require("./fen");
|
|
7
|
-
const
|
|
6
|
+
const variantUtil_1 = require("./variantUtil");
|
|
8
7
|
function squareSet(squares) {
|
|
9
8
|
const r = [];
|
|
10
9
|
for (let y = 8; y >= 0; y--) {
|
|
@@ -18,7 +17,7 @@ function squareSet(squares) {
|
|
|
18
17
|
}
|
|
19
18
|
exports.squareSet = squareSet;
|
|
20
19
|
function piece(piece) {
|
|
21
|
-
return
|
|
20
|
+
return fen_1.makePiece(piece);
|
|
22
21
|
}
|
|
23
22
|
exports.piece = piece;
|
|
24
23
|
function board(board) {
|
|
@@ -36,13 +35,13 @@ function board(board) {
|
|
|
36
35
|
}
|
|
37
36
|
exports.board = board;
|
|
38
37
|
function square(sq) {
|
|
39
|
-
return
|
|
38
|
+
return util_1.makeSquare(sq);
|
|
40
39
|
}
|
|
41
40
|
exports.square = square;
|
|
42
41
|
function dests(dests) {
|
|
43
42
|
const lines = [];
|
|
44
43
|
for (const [from, to] of dests) {
|
|
45
|
-
lines.push(`${
|
|
44
|
+
lines.push(`${util_1.makeSquare(from)}: ${Array.from(to, square).join(' ')}`);
|
|
46
45
|
}
|
|
47
46
|
return lines.join('\n');
|
|
48
47
|
}
|
|
@@ -52,66 +51,41 @@ function perft(pos, depth, log = false) {
|
|
|
52
51
|
return 1;
|
|
53
52
|
const ctx = pos.ctx();
|
|
54
53
|
const dropDests = pos.allDropDests(ctx);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
? to
|
|
64
|
-
: to.intersect(squareSet_1.SquareSet.promotionZone(pos.turn));
|
|
65
|
-
const forceProm = role === 'pawn' || role === 'lance'
|
|
66
|
-
? squareSet_1.SquareSet.backrank(pos.turn)
|
|
67
|
-
: role === 'knight'
|
|
68
|
-
? squareSet_1.SquareSet.backrank2(pos.turn)
|
|
69
|
-
: squareSet_1.SquareSet.empty();
|
|
70
|
-
nodes += promMoves.diff(forceProm).size();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return nodes;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
let nodes = 0;
|
|
77
|
-
for (const [from, dests] of pos.allDests(ctx)) {
|
|
78
|
-
for (const to of dests) {
|
|
79
|
-
const promotions = [];
|
|
80
|
-
const role = pos.board.get(from).role;
|
|
81
|
-
const canPromote = types_1.PROMOTABLE_ROLES.includes(role) &&
|
|
82
|
-
(squareSet_1.SquareSet.promotionZone(pos.turn).has(to) || squareSet_1.SquareSet.promotionZone(pos.turn).has(from));
|
|
83
|
-
if (canPromote) {
|
|
84
|
-
promotions.push(true);
|
|
85
|
-
if (!(((role === 'pawn' || role === 'lance') && squareSet_1.SquareSet.backrank(pos.turn).has(to)) ||
|
|
86
|
-
(role === 'knight' && squareSet_1.SquareSet.backrank2(pos.turn).has(to))))
|
|
87
|
-
promotions.push(false);
|
|
88
|
-
}
|
|
89
|
-
else
|
|
54
|
+
let nodes = 0;
|
|
55
|
+
for (const [from, dests] of pos.allDests(ctx)) {
|
|
56
|
+
for (const to of dests) {
|
|
57
|
+
const promotions = [];
|
|
58
|
+
const piece = pos.board.get(from);
|
|
59
|
+
if (variantUtil_1.pieceCanPromote(pos.rules)(piece, from, to)) {
|
|
60
|
+
promotions.push(true);
|
|
61
|
+
if (!variantUtil_1.pieceInDeadZone(pos.rules)(piece, to))
|
|
90
62
|
promotions.push(false);
|
|
91
|
-
for (const promotion of promotions) {
|
|
92
|
-
const child = pos.clone();
|
|
93
|
-
const move = { from, to, promotion };
|
|
94
|
-
child.play(move);
|
|
95
|
-
const children = perft(child, depth - 1, false);
|
|
96
|
-
if (log)
|
|
97
|
-
console.log((0, util_1.makeUsi)(move), children);
|
|
98
|
-
nodes += children;
|
|
99
|
-
}
|
|
100
63
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
for (const
|
|
64
|
+
else
|
|
65
|
+
promotions.push(false);
|
|
66
|
+
for (const promotion of promotions) {
|
|
104
67
|
const child = pos.clone();
|
|
105
|
-
const move = {
|
|
68
|
+
const move = { from, to, promotion };
|
|
106
69
|
child.play(move);
|
|
107
70
|
const children = perft(child, depth - 1, false);
|
|
108
71
|
if (log)
|
|
109
|
-
console.log(
|
|
72
|
+
console.log(util_1.makeUsi(move), children, '(', depth, ')');
|
|
110
73
|
nodes += children;
|
|
111
74
|
}
|
|
112
75
|
}
|
|
113
|
-
return nodes;
|
|
114
76
|
}
|
|
77
|
+
for (const [role, dropDestsOfRole] of dropDests) {
|
|
78
|
+
for (const to of dropDestsOfRole) {
|
|
79
|
+
const child = pos.clone();
|
|
80
|
+
const move = { role, to };
|
|
81
|
+
child.play(move);
|
|
82
|
+
const children = perft(child, depth - 1, false);
|
|
83
|
+
if (log)
|
|
84
|
+
console.log(util_1.makeUsi(move), children, '(', depth, ')');
|
|
85
|
+
nodes += children;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return nodes;
|
|
115
89
|
}
|
|
116
90
|
exports.perft = perft;
|
|
117
91
|
//# sourceMappingURL=debug.js.map
|
package/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["src/debug.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["src/debug.ts"],"names":[],"mappings":"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"}
|
package/fen.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Result } from '@badrap/result';
|
|
2
2
|
import { Piece } from './types';
|
|
3
3
|
import { Board } from './board';
|
|
4
|
-
import { Setup
|
|
4
|
+
import { Setup } from './setup';
|
|
5
|
+
import { Hand, Hands } from './hand';
|
|
5
6
|
export declare const INITIAL_BOARD_FEN = "lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL";
|
|
6
7
|
export declare const INITIAL_EPD: string;
|
|
7
8
|
export declare const INITIAL_FEN: string;
|
|
@@ -11,14 +12,14 @@ export declare const EMPTY_FEN: string;
|
|
|
11
12
|
export declare enum InvalidFen {
|
|
12
13
|
Fen = "ERR_FEN",
|
|
13
14
|
Board = "ERR_BOARD",
|
|
14
|
-
|
|
15
|
+
Hands = "ERR_HANDS",
|
|
15
16
|
Turn = "ERR_TURN",
|
|
16
17
|
Fullmoves = "ERR_FULLMOVES"
|
|
17
18
|
}
|
|
18
19
|
export declare class FenError extends Error {
|
|
19
20
|
}
|
|
20
21
|
export declare function parseBoardFen(boardPart: string): Result<Board, FenError>;
|
|
21
|
-
export declare function
|
|
22
|
+
export declare function parseHands(handsPart: string): Result<Hands, FenError>;
|
|
22
23
|
export declare function parseFen(fen: string): Result<Setup, FenError>;
|
|
23
24
|
interface FenOpts {
|
|
24
25
|
epd?: boolean;
|
|
@@ -26,7 +27,7 @@ interface FenOpts {
|
|
|
26
27
|
export declare function parsePiece(str: string): Piece | undefined;
|
|
27
28
|
export declare function makePiece(piece: Piece): string;
|
|
28
29
|
export declare function makeBoardFen(board: Board): string;
|
|
29
|
-
export declare function
|
|
30
|
-
export declare function
|
|
30
|
+
export declare function makeHand(hand: Hand): string;
|
|
31
|
+
export declare function makeHands(hands: Hands): string;
|
|
31
32
|
export declare function makeFen(setup: Setup, opts?: FenOpts): string;
|
|
32
33
|
export {};
|