shogiops 0.2.8 → 0.5.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/attacks.js +32 -48
- package/attacks.js.map +1 -1
- package/board.d.ts +3 -0
- package/board.js +60 -33
- package/board.js.map +1 -1
- package/compat.d.ts +6 -24
- package/compat.js +20 -185
- package/compat.js.map +1 -1
- package/debug.js +37 -72
- package/debug.js.map +1 -1
- package/hand.d.ts +38 -0
- package/hand.js +69 -0
- package/hand.js.map +1 -0
- package/hash.d.ts +4 -3
- package/hash.js +12 -20
- package/hash.js.map +1 -1
- package/index.d.ts +13 -10
- package/index.js +22 -64
- package/index.js.map +1 -1
- package/{csa.d.ts → notation/csa/csa.d.ts} +9 -9
- package/notation/csa/csa.js +213 -0
- package/notation/csa/csa.js.map +1 -0
- package/notation/japanese.d.ts +3 -0
- package/notation/japanese.js +61 -0
- package/notation/japanese.js.map +1 -0
- package/{kif.d.ts → notation/kif/kif.d.ts} +10 -9
- package/notation/kif/kif.js +232 -0
- package/notation/kif/kif.js.map +1 -0
- package/{kifHandicaps.d.ts → notation/kif/kifHandicaps.d.ts} +0 -0
- package/{kifHandicaps.js → notation/kif/kifHandicaps.js} +7 -7
- package/notation/kif/kifHandicaps.js.map +1 -0
- package/notation/kitaoKawasaki.d.ts +3 -0
- package/notation/kitaoKawasaki.js +26 -0
- package/notation/kitaoKawasaki.js.map +1 -0
- package/notation/kitaokawasaki.d.ts +0 -0
- package/notation/kitaokawasaki.js +2 -0
- package/notation/kitaokawasaki.js.map +1 -0
- package/notation/notationUtil.d.ts +12 -0
- package/{kifUtil.js → notation/notationUtil.js} +39 -40
- package/notation/notationUtil.js.map +1 -0
- package/notation/western.d.ts +3 -0
- package/notation/western.js +23 -0
- package/notation/western.js.map +1 -0
- package/notation/westernEngine.d.ts +3 -0
- package/notation/westernEngine.js +23 -0
- package/notation/westernEngine.js.map +1 -0
- package/package.json +54 -37
- package/setup.d.ts +2 -32
- package/setup.js +5 -80
- package/setup.js.map +1 -1
- package/sfen.d.ts +33 -0
- package/sfen.js +188 -0
- package/sfen.js.map +1 -0
- package/shogi.d.ts +14 -7
- package/shogi.js +138 -141
- package/shogi.js.map +1 -1
- package/squareSet.d.ts +1 -5
- package/squareSet.js +1 -18
- package/squareSet.js.map +1 -1
- package/src/board.ts +34 -0
- package/src/compat.ts +18 -197
- package/src/debug.ts +26 -56
- package/src/hand.ts +94 -0
- package/src/hash.ts +8 -7
- package/src/index.ts +16 -12
- package/src/{csa.ts → notation/csa/csa.ts} +53 -52
- package/src/notation/japanese.ts +74 -0
- package/src/{kif.ts → notation/kif/kif.ts} +77 -78
- package/src/{kifHandicaps.ts → notation/kif/kifHandicaps.ts} +5 -0
- package/src/notation/kitaoKawasaki.ts +24 -0
- package/src/{kifUtil.ts → notation/notationUtil.ts} +37 -28
- package/src/notation/western.ts +21 -0
- package/src/notation/westernEngine.ts +21 -0
- package/src/setup.ts +4 -91
- package/src/sfen.ts +190 -0
- 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 +8 -73
- package/src/variant.ts +44 -3
- package/src/variantUtil.ts +160 -0
- package/transform.js +18 -24
- package/transform.js.map +1 -1
- package/types.d.ts +3 -7
- package/types.js +18 -24
- package/types.js.map +1 -1
- package/util.d.ts +4 -7
- package/util.js +24 -96
- package/util.js.map +1 -1
- package/variant.d.ts +12 -1
- package/variant.js +42 -16
- package/variant.js.map +1 -1
- package/variantUtil.d.ts +13 -0
- package/variantUtil.js +147 -0
- package/variantUtil.js.map +1 -0
- package/csa.js +0 -229
- package/csa.js.map +0 -1
- package/csaUtil.d.ts +0 -3
- package/csaUtil.js +0 -21
- package/csaUtil.js.map +0 -1
- package/fen.d.ts +0 -32
- package/fen.js +0 -197
- package/fen.js.map +0 -1
- package/kif.js +0 -247
- package/kif.js.map +0 -1
- package/kifHandicaps.js.map +0 -1
- package/kifUtil.d.ts +0 -9
- package/kifUtil.js.map +0 -1
- package/san.d.ts +0 -6
- package/san.js +0 -135
- package/san.js.map +0 -1
- package/src/csaUtil.ts +0 -15
- package/src/fen.ts +0 -183
- package/src/san.ts +0 -136
package/squareSet.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SquareSet = void 0;
|
|
4
1
|
function popcnt27(n) {
|
|
5
2
|
n = trimTo27(n);
|
|
6
3
|
n = n - ((n >>> 1) & 1431655765);
|
|
@@ -22,7 +19,7 @@ function rbit27(n) {
|
|
|
22
19
|
function trimTo27(n) {
|
|
23
20
|
return n & 0x07ffffff;
|
|
24
21
|
}
|
|
25
|
-
class SquareSet {
|
|
22
|
+
export class SquareSet {
|
|
26
23
|
constructor(lo, mid, hi) {
|
|
27
24
|
this.lo = lo;
|
|
28
25
|
this.mid = mid;
|
|
@@ -59,19 +56,6 @@ class SquareSet {
|
|
|
59
56
|
static corners() {
|
|
60
57
|
return new SquareSet(0x00000101, 0, 0x04040000);
|
|
61
58
|
}
|
|
62
|
-
static promotionZones() {
|
|
63
|
-
// backranks
|
|
64
|
-
return new SquareSet(0x07ffffff, 0, 0x07ffffff);
|
|
65
|
-
}
|
|
66
|
-
static promotionZone(color) {
|
|
67
|
-
return color === 'sente' ? new SquareSet(0, 0, 0x07ffffff) : new SquareSet(0x07ffffff, 0, 0);
|
|
68
|
-
}
|
|
69
|
-
static backrank(color) {
|
|
70
|
-
return color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(0);
|
|
71
|
-
}
|
|
72
|
-
static backrank2(color) {
|
|
73
|
-
return (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(1)).union(this.backrank(color));
|
|
74
|
-
}
|
|
75
59
|
complement() {
|
|
76
60
|
return new SquareSet(~this.lo, ~this.mid, ~this.hi);
|
|
77
61
|
}
|
|
@@ -267,5 +251,4 @@ class SquareSet {
|
|
|
267
251
|
}
|
|
268
252
|
}
|
|
269
253
|
}
|
|
270
|
-
exports.SquareSet = SquareSet;
|
|
271
254
|
//# sourceMappingURL=squareSet.js.map
|
package/squareSet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"squareSet.js","sourceRoot":"","sources":["src/squareSet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"squareSet.js","sourceRoot":"","sources":["src/squareSet.ts"],"names":[],"mappings":"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"}
|
package/src/board.ts
CHANGED
|
@@ -2,6 +2,9 @@ import { Square, Color, Role, Piece, COLORS, ROLES } from './types';
|
|
|
2
2
|
import { SquareSet } from './squareSet';
|
|
3
3
|
|
|
4
4
|
export class Board implements Iterable<[Square, Piece]> {
|
|
5
|
+
numberOfFiles: number;
|
|
6
|
+
numberOfRanks: number;
|
|
7
|
+
|
|
5
8
|
occupied: SquareSet;
|
|
6
9
|
|
|
7
10
|
gote: SquareSet;
|
|
@@ -31,6 +34,8 @@ export class Board implements Iterable<[Square, Piece]> {
|
|
|
31
34
|
}
|
|
32
35
|
|
|
33
36
|
reset(): void {
|
|
37
|
+
this.numberOfFiles = 9;
|
|
38
|
+
this.numberOfRanks = 9;
|
|
34
39
|
this.occupied = new SquareSet(0x7fd05ff, 0x0, 0x7fd05ff);
|
|
35
40
|
this.sente = new SquareSet(0x7fd05ff, 0x0, 0x0);
|
|
36
41
|
this.gote = new SquareSet(0x0, 0x0, 0x7fd05ff);
|
|
@@ -50,6 +55,30 @@ export class Board implements Iterable<[Square, Piece]> {
|
|
|
50
55
|
this.dragon = SquareSet.empty();
|
|
51
56
|
}
|
|
52
57
|
|
|
58
|
+
static minishogi(): Board {
|
|
59
|
+
const board = new Board();
|
|
60
|
+
board.numberOfFiles = 5;
|
|
61
|
+
board.numberOfRanks = 5;
|
|
62
|
+
board.occupied = new SquareSet(0x0, 0x43e000, 0x7c20000);
|
|
63
|
+
board.sente = new SquareSet(0x0, 0x43e000, 0x0);
|
|
64
|
+
board.gote = new SquareSet(0x0, 0x0, 0x7c20000);
|
|
65
|
+
board.pawn = new SquareSet(0x0, 0x400000, 0x20000);
|
|
66
|
+
board.lance = new SquareSet(0x0, 0x0, 0x0);
|
|
67
|
+
board.knight = new SquareSet(0x0, 0x0, 0x0);
|
|
68
|
+
board.silver = new SquareSet(0x0, 0x8000, 0x1000000);
|
|
69
|
+
board.gold = new SquareSet(0x0, 0x4000, 0x2000000);
|
|
70
|
+
board.bishop = new SquareSet(0x0, 0x10000, 0x800000);
|
|
71
|
+
board.rook = new SquareSet(0x0, 0x20000, 0x400000);
|
|
72
|
+
board.tokin = new SquareSet(0x0, 0, 0);
|
|
73
|
+
board.promotedlance = new SquareSet(0x0, 0x0, 0x0);
|
|
74
|
+
board.promotedknight = new SquareSet(0x0, 0x0, 0x0);
|
|
75
|
+
board.promotedsilver = new SquareSet(0x0, 0x0, 0x0);
|
|
76
|
+
board.horse = new SquareSet(0x0, 0x0, 0x0);
|
|
77
|
+
board.dragon = new SquareSet(0x0, 0x0, 0x0);
|
|
78
|
+
board.king = new SquareSet(0x0, 0x2000, 0x4000000);
|
|
79
|
+
return board;
|
|
80
|
+
}
|
|
81
|
+
|
|
53
82
|
static empty(): Board {
|
|
54
83
|
const board = new Board();
|
|
55
84
|
board.clear();
|
|
@@ -57,6 +86,8 @@ export class Board implements Iterable<[Square, Piece]> {
|
|
|
57
86
|
}
|
|
58
87
|
|
|
59
88
|
clear(): void {
|
|
89
|
+
this.numberOfFiles = 9;
|
|
90
|
+
this.numberOfRanks = 9;
|
|
60
91
|
this.occupied = SquareSet.empty();
|
|
61
92
|
for (const color of COLORS) this[color] = SquareSet.empty();
|
|
62
93
|
for (const role of ROLES) this[role] = SquareSet.empty();
|
|
@@ -65,6 +96,8 @@ export class Board implements Iterable<[Square, Piece]> {
|
|
|
65
96
|
clone(): Board {
|
|
66
97
|
const board = new Board();
|
|
67
98
|
board.occupied = this.occupied;
|
|
99
|
+
board.numberOfFiles = this.numberOfFiles;
|
|
100
|
+
board.numberOfRanks = this.numberOfRanks;
|
|
68
101
|
for (const color of COLORS) board[color] = this[color];
|
|
69
102
|
for (const role of ROLES) board[role] = this[role];
|
|
70
103
|
return board;
|
|
@@ -72,6 +105,7 @@ export class Board implements Iterable<[Square, Piece]> {
|
|
|
72
105
|
|
|
73
106
|
equals(other: Board): boolean {
|
|
74
107
|
if (!this.gote.equals(other.gote)) return false;
|
|
108
|
+
if (this.numberOfFiles !== other.numberOfFiles || this.numberOfRanks !== other.numberOfRanks) return false;
|
|
75
109
|
return ROLES.every(role => this[role].equals(other[role]));
|
|
76
110
|
}
|
|
77
111
|
|
package/src/compat.ts
CHANGED
|
@@ -1,54 +1,32 @@
|
|
|
1
|
-
import { Rules, SquareName, Move, isDrop,
|
|
2
|
-
import { defined, makeSquare,
|
|
1
|
+
import { Rules, SquareName, Move, isDrop, Role } from './types';
|
|
2
|
+
import { defined, makeSquare, parseUsi } from './util';
|
|
3
3
|
import { Position } from './shogi';
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
export type ChessFileName = typeof C_FILE_NAMES[number];
|
|
7
|
-
|
|
8
|
-
export const C_RANK_NAMES = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;
|
|
9
|
-
export type ChessRankName = typeof C_RANK_NAMES[number];
|
|
10
|
-
|
|
11
|
-
export type ChessSquareName = `${ChessFileName}${ChessRankName}`;
|
|
12
|
-
|
|
13
|
-
export function makeChessSquare(square: Square): ChessSquareName {
|
|
14
|
-
return (C_FILE_NAMES[squareFile(square)] + C_RANK_NAMES[squareRank(square)]) as ChessSquareName;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function parseChessSquare(str: ChessSquareName): Square;
|
|
18
|
-
export function parseChessSquare(str: string): Square | undefined;
|
|
19
|
-
export function parseChessSquare(str: string): Square | undefined {
|
|
20
|
-
if (str.length !== 2) return;
|
|
21
|
-
const file = Math.abs(str.charCodeAt(0) - 'a'.charCodeAt(0));
|
|
22
|
-
const rank = Math.abs(str.charCodeAt(1) - '1'.charCodeAt(0));
|
|
23
|
-
if (file < 0 || file >= 9 || rank < 0 || rank >= 9) return;
|
|
24
|
-
return file + 9 * rank;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function shogigroundDests(pos: Position): Map<ChessSquareName, ChessSquareName[]> {
|
|
5
|
+
export function shogigroundDests(pos: Position): Map<SquareName, SquareName[]> {
|
|
28
6
|
const result = new Map();
|
|
29
7
|
const ctx = pos.ctx();
|
|
30
8
|
for (const [from, squares] of pos.allDests(ctx)) {
|
|
31
9
|
if (squares.nonEmpty()) {
|
|
32
|
-
const d = Array.from(squares, s =>
|
|
33
|
-
result.set(
|
|
10
|
+
const d = Array.from(squares, s => makeSquare(s));
|
|
11
|
+
result.set(makeSquare(from), d);
|
|
34
12
|
}
|
|
35
13
|
}
|
|
36
14
|
return result;
|
|
37
15
|
}
|
|
38
16
|
|
|
39
|
-
export function shogigroundDropDests(pos: Position, role?:
|
|
17
|
+
export function shogigroundDropDests(pos: Position, role?: Role): Map<Role, SquareName[]> {
|
|
40
18
|
const result = new Map();
|
|
41
19
|
if (role) {
|
|
42
20
|
const squares = pos.dropDests(role);
|
|
43
21
|
if (squares.nonEmpty()) {
|
|
44
|
-
const d = Array.from(squares, s =>
|
|
22
|
+
const d = Array.from(squares, s => makeSquare(s));
|
|
45
23
|
result.set(role, d);
|
|
46
24
|
}
|
|
47
25
|
} else {
|
|
48
26
|
const ctx = pos.ctx();
|
|
49
27
|
for (const [r, squares] of pos.allDropDests(ctx)) {
|
|
50
28
|
if (squares.nonEmpty()) {
|
|
51
|
-
const d = Array.from(squares, s =>
|
|
29
|
+
const d = Array.from(squares, s => makeSquare(s));
|
|
52
30
|
result.set(r, d);
|
|
53
31
|
}
|
|
54
32
|
}
|
|
@@ -65,177 +43,20 @@ export function scalashogiCharPair(move: Move): string {
|
|
|
65
43
|
else return String.fromCharCode(34 + move.from, move.promotion ? 34 + move.to + 128 : 34 + move.to);
|
|
66
44
|
}
|
|
67
45
|
|
|
68
|
-
export function
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
export function lishogiVariantRules(variant: 'standard' | 'fromPosition'): Rules {
|
|
73
|
-
switch (variant) {
|
|
74
|
-
case 'standard':
|
|
75
|
-
case 'fromPosition':
|
|
76
|
-
return 'shogi';
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export function chessCoordToShogiCoord(s: ChessSquareName): SquareName {
|
|
81
|
-
return makeSquare(parseChessSquare(s));
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export function shogiCoordToChessCord(s: SquareName): ChessSquareName {
|
|
85
|
-
return makeChessSquare(parseSquare(s));
|
|
46
|
+
export function usiToSquareNames(usi: string): SquareName[] {
|
|
47
|
+
const move = parseUsi(usi);
|
|
48
|
+
return defined(move) ? moveToSquareNames(move) : [];
|
|
86
49
|
}
|
|
87
50
|
|
|
88
|
-
export function
|
|
89
|
-
|
|
90
|
-
if (str.match(/^[a-i][1-9]$/)) return str as ChessSquareName;
|
|
91
|
-
return undefined;
|
|
51
|
+
export function moveToSquareNames(move: Move): SquareName[] {
|
|
52
|
+
return isDrop(move) ? [makeSquare(move.to)] : [makeSquare(move.from), makeSquare(move.to)];
|
|
92
53
|
}
|
|
93
54
|
|
|
94
|
-
export function
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export function roleToLishogiChar(role: Role): string {
|
|
101
|
-
switch (role) {
|
|
102
|
-
case 'pawn':
|
|
103
|
-
return 'p';
|
|
104
|
-
case 'lance':
|
|
105
|
-
return 'l';
|
|
106
|
-
case 'knight':
|
|
107
|
-
return 'n';
|
|
108
|
-
case 'silver':
|
|
109
|
-
return 's';
|
|
110
|
-
case 'gold':
|
|
111
|
-
return 'g';
|
|
112
|
-
case 'bishop':
|
|
113
|
-
return 'b';
|
|
114
|
-
case 'rook':
|
|
115
|
-
return 'r';
|
|
116
|
-
case 'tokin':
|
|
117
|
-
return 't';
|
|
118
|
-
case 'promotedlance':
|
|
119
|
-
return 'u';
|
|
120
|
-
case 'promotedknight':
|
|
121
|
-
return 'm';
|
|
122
|
-
case 'promotedsilver':
|
|
123
|
-
return 'a';
|
|
124
|
-
case 'horse':
|
|
125
|
-
return 'h';
|
|
126
|
-
case 'dragon':
|
|
127
|
-
return 'd';
|
|
128
|
-
case 'king':
|
|
129
|
-
return 'k';
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export function lishogiCharToRole(
|
|
134
|
-
ch:
|
|
135
|
-
| 'p'
|
|
136
|
-
| 'l'
|
|
137
|
-
| 'n'
|
|
138
|
-
| 's'
|
|
139
|
-
| 'g'
|
|
140
|
-
| 'b'
|
|
141
|
-
| 'r'
|
|
142
|
-
| 't'
|
|
143
|
-
| 'u'
|
|
144
|
-
| 'm'
|
|
145
|
-
| 'a'
|
|
146
|
-
| 'h'
|
|
147
|
-
| 'd'
|
|
148
|
-
| 'P'
|
|
149
|
-
| 'L'
|
|
150
|
-
| 'N'
|
|
151
|
-
| 'S'
|
|
152
|
-
| 'G'
|
|
153
|
-
| 'B'
|
|
154
|
-
| 'R'
|
|
155
|
-
| 'T'
|
|
156
|
-
| 'U'
|
|
157
|
-
| 'M'
|
|
158
|
-
| 'A'
|
|
159
|
-
| 'H'
|
|
160
|
-
| 'D'
|
|
161
|
-
): Role;
|
|
162
|
-
export function lishogiCharToRole(ch: string): Role | undefined;
|
|
163
|
-
export function lishogiCharToRole(ch: string): Role | undefined {
|
|
164
|
-
switch (ch) {
|
|
165
|
-
case 'P':
|
|
166
|
-
case 'p':
|
|
167
|
-
return 'pawn';
|
|
168
|
-
case 'L':
|
|
169
|
-
case 'l':
|
|
170
|
-
return 'lance';
|
|
171
|
-
case 'N':
|
|
172
|
-
case 'n':
|
|
173
|
-
return 'knight';
|
|
174
|
-
case 'S':
|
|
175
|
-
case 's':
|
|
176
|
-
return 'silver';
|
|
177
|
-
case 'G':
|
|
178
|
-
case 'g':
|
|
179
|
-
return 'gold';
|
|
180
|
-
case 'B':
|
|
181
|
-
case 'b':
|
|
182
|
-
return 'bishop';
|
|
183
|
-
case 'R':
|
|
184
|
-
case 'r':
|
|
185
|
-
return 'rook';
|
|
186
|
-
case 'T':
|
|
187
|
-
case 't':
|
|
188
|
-
return 'tokin';
|
|
189
|
-
case 'U':
|
|
190
|
-
case 'u':
|
|
191
|
-
return 'promotedlance';
|
|
192
|
-
case 'M':
|
|
193
|
-
case 'm':
|
|
194
|
-
return 'promotedknight';
|
|
195
|
-
case 'A':
|
|
196
|
-
case 'a':
|
|
197
|
-
return 'promotedsilver';
|
|
198
|
-
case 'H':
|
|
199
|
-
case 'h':
|
|
200
|
-
return 'horse';
|
|
201
|
-
case 'D':
|
|
202
|
-
case 'd':
|
|
203
|
-
return 'dragon';
|
|
204
|
-
case 'K':
|
|
205
|
-
case 'k':
|
|
206
|
-
return 'king';
|
|
55
|
+
export function lishogiVariantRules(variant: string): Rules {
|
|
56
|
+
switch (variant) {
|
|
57
|
+
case 'minishogi':
|
|
58
|
+
return 'minishogi';
|
|
207
59
|
default:
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
export function parseLishogiUci(str: string): Move | undefined {
|
|
213
|
-
if (str[1] === '*' && str.length === 4) {
|
|
214
|
-
const role = lishogiCharToRole(str[0]) as PocketRole;
|
|
215
|
-
const to = parseChessSquare(str.slice(2));
|
|
216
|
-
if (defined(role) && defined(to)) return { role, to };
|
|
217
|
-
} else if (str.length === 4 || str.length === 5) {
|
|
218
|
-
const from = parseChessSquare(str.slice(0, 2));
|
|
219
|
-
const to = parseChessSquare(str.slice(2, 4));
|
|
220
|
-
const promotion = str[4] === '+' ? true : false;
|
|
221
|
-
if (defined(from) && defined(to)) return { from, to, promotion };
|
|
60
|
+
return 'shogi';
|
|
222
61
|
}
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
export function makeLishogiUci(move: Move): string {
|
|
227
|
-
if (isDrop(move)) return `${roleToLishogiChar(move.role).toUpperCase()}*${makeChessSquare(move.to)}`;
|
|
228
|
-
return makeChessSquare(move.from) + makeChessSquare(move.to) + (move.promotion ? '+' : '');
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
export function assureUsi(str: string): string | undefined {
|
|
232
|
-
if (str.match(/^([1-9][a-i]|([RBGSNLP]\*))[1-9][a-i](\+|\=)?$/)) return str;
|
|
233
|
-
if (str.match(/^([a-i][1-9]|([RBGSNLP]\*))[a-i][1-9](\+|\=)?$/)) return makeUsi(parseLishogiUci(str)!);
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
export function assureLishogiUci(str: string): string | undefined {
|
|
238
|
-
if (str.match(/^([a-i][1-9]|([RBGSNLP]\*))[a-i][1-9](\+|\=)?$/)) return str;
|
|
239
|
-
if (str.match(/^([1-9][a-i]|([RBGSNLP]\*))[1-9][a-i](\+|\=)?$/)) return makeLishogiUci(parseUsi(str)!);
|
|
240
|
-
return;
|
|
241
62
|
}
|
package/src/debug.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Square, Piece
|
|
1
|
+
import { Square, Piece } from './types';
|
|
2
2
|
import { makeSquare, makeUsi } from './util';
|
|
3
|
-
import { makePiece } from './
|
|
3
|
+
import { makePiece } from './sfen';
|
|
4
4
|
import { SquareSet } from './squareSet';
|
|
5
5
|
import { Board } from './board';
|
|
6
6
|
import { Position } from './shogi';
|
|
7
|
+
import { pieceCanPromote, pieceInDeadZone } from './variantUtil';
|
|
7
8
|
|
|
8
9
|
export function squareSet(squares: SquareSet): string {
|
|
9
10
|
const r = [];
|
|
@@ -53,66 +54,35 @@ export function perft(pos: Position, depth: number, log = false): number {
|
|
|
53
54
|
const ctx = pos.ctx();
|
|
54
55
|
const dropDests = pos.allDropDests(ctx);
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
: to.intersect(SquareSet.promotionZone(pos.turn));
|
|
66
|
-
const forceProm =
|
|
67
|
-
role === 'pawn' || role === 'lance'
|
|
68
|
-
? SquareSet.backrank(pos.turn)
|
|
69
|
-
: role === 'knight'
|
|
70
|
-
? SquareSet.backrank2(pos.turn)
|
|
71
|
-
: SquareSet.empty();
|
|
72
|
-
nodes += promMoves.diff(forceProm).size();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return nodes;
|
|
76
|
-
} else {
|
|
77
|
-
let nodes = 0;
|
|
78
|
-
for (const [from, dests] of pos.allDests(ctx)) {
|
|
79
|
-
for (const to of dests) {
|
|
80
|
-
const promotions: Array<boolean> = [];
|
|
81
|
-
const role = pos.board.get(from)!.role;
|
|
82
|
-
const canPromote: boolean =
|
|
83
|
-
(PROMOTABLE_ROLES as ReadonlyArray<string>).includes(role!) &&
|
|
84
|
-
(SquareSet.promotionZone(pos.turn).has(to) || SquareSet.promotionZone(pos.turn).has(from));
|
|
85
|
-
if (canPromote) {
|
|
86
|
-
promotions.push(true);
|
|
87
|
-
if (
|
|
88
|
-
!(
|
|
89
|
-
((role === 'pawn' || role === 'lance') && SquareSet.backrank(pos.turn).has(to)) ||
|
|
90
|
-
(role === 'knight' && SquareSet.backrank2(pos.turn).has(to))
|
|
91
|
-
)
|
|
92
|
-
)
|
|
93
|
-
promotions.push(false);
|
|
94
|
-
} else promotions.push(false);
|
|
57
|
+
let nodes = 0;
|
|
58
|
+
for (const [from, dests] of pos.allDests(ctx)) {
|
|
59
|
+
for (const to of dests) {
|
|
60
|
+
const promotions: Array<boolean> = [];
|
|
61
|
+
const piece = pos.board.get(from)!;
|
|
62
|
+
if (pieceCanPromote(pos.rules)(piece, from, to)) {
|
|
63
|
+
promotions.push(true);
|
|
64
|
+
if (!pieceInDeadZone(pos.rules)(piece, to)) promotions.push(false);
|
|
65
|
+
} else promotions.push(false);
|
|
95
66
|
|
|
96
|
-
|
|
97
|
-
const child = pos.clone();
|
|
98
|
-
const move = { from, to, promotion };
|
|
99
|
-
child.play(move);
|
|
100
|
-
const children = perft(child, depth - 1, false);
|
|
101
|
-
if (log) console.log(makeUsi(move), children);
|
|
102
|
-
nodes += children;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
for (const [role, dropDestsOfRole] of dropDests) {
|
|
107
|
-
for (const to of dropDestsOfRole) {
|
|
67
|
+
for (const promotion of promotions) {
|
|
108
68
|
const child = pos.clone();
|
|
109
|
-
const move = {
|
|
69
|
+
const move = { from, to, promotion };
|
|
110
70
|
child.play(move);
|
|
111
71
|
const children = perft(child, depth - 1, false);
|
|
112
|
-
if (log) console.log(makeUsi(move), children);
|
|
72
|
+
if (log) console.log(makeUsi(move), children, '(', depth, ')');
|
|
113
73
|
nodes += children;
|
|
114
74
|
}
|
|
115
75
|
}
|
|
116
|
-
return nodes;
|
|
117
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) console.log(makeUsi(move), children, '(', depth, ')');
|
|
84
|
+
nodes += children;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return nodes;
|
|
118
88
|
}
|
package/src/hand.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Role, ROLES } from './types';
|
|
2
|
+
|
|
3
|
+
// Hand alone can store anything
|
|
4
|
+
// let the variants decide what to store and what not
|
|
5
|
+
export class Hand {
|
|
6
|
+
pawn: number;
|
|
7
|
+
lance: number;
|
|
8
|
+
knight: number;
|
|
9
|
+
silver: number;
|
|
10
|
+
gold: number;
|
|
11
|
+
bishop: number;
|
|
12
|
+
rook: number;
|
|
13
|
+
tokin: number;
|
|
14
|
+
promotedlance: number;
|
|
15
|
+
promotedknight: number;
|
|
16
|
+
promotedsilver: number;
|
|
17
|
+
horse: number;
|
|
18
|
+
dragon: number;
|
|
19
|
+
king: number;
|
|
20
|
+
|
|
21
|
+
private constructor() {}
|
|
22
|
+
|
|
23
|
+
static empty(): Hand {
|
|
24
|
+
const m = new Hand();
|
|
25
|
+
for (const role of ROLES) m[role] = 0;
|
|
26
|
+
return m;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
clone(): Hand {
|
|
30
|
+
const m = new Hand();
|
|
31
|
+
for (const role of ROLES) m[role] = this[role];
|
|
32
|
+
return m;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
equals(other: Hand): boolean {
|
|
36
|
+
return ROLES.every(role => this[role] === other[role]);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
add(other: Hand): Hand {
|
|
40
|
+
const m = new Hand();
|
|
41
|
+
for (const role of ROLES) m[role] = this[role] + other[role];
|
|
42
|
+
return m;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
nonEmpty(): boolean {
|
|
46
|
+
return ROLES.some(role => this[role] > 0);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
isEmpty(): boolean {
|
|
50
|
+
return !this.nonEmpty();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
count(): number {
|
|
54
|
+
return ROLES.map(role => this[role]).reduce((acc, cur) => acc + cur);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
*[Symbol.iterator](): Iterator<[Role, number]> {
|
|
58
|
+
for (const role of ROLES.filter(r => this[r] > 0)) {
|
|
59
|
+
yield [role, this[role]];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export class Hands {
|
|
65
|
+
constructor(public gote: Hand, public sente: Hand) {}
|
|
66
|
+
|
|
67
|
+
static empty(): Hands {
|
|
68
|
+
return new Hands(Hand.empty(), Hand.empty());
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
clone(): Hands {
|
|
72
|
+
return new Hands(this.gote.clone(), this.sente.clone());
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
equals(other: Hands): boolean {
|
|
76
|
+
return this.gote.equals(other.gote) && this.sente.equals(other.sente);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
add(other: Hands): Hands {
|
|
80
|
+
return new Hands(this.gote.add(other.gote), this.sente.add(other.sente));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
count(): number {
|
|
84
|
+
return this.gote.count() + this.sente.count();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
isEmpty(): boolean {
|
|
88
|
+
return this.gote.isEmpty() && this.sente.isEmpty();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
nonEmpty(): boolean {
|
|
92
|
+
return !this.isEmpty();
|
|
93
|
+
}
|
|
94
|
+
}
|
package/src/hash.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { COLORS,
|
|
1
|
+
import { COLORS, ROLES } from './types';
|
|
2
2
|
import { Board } from './board';
|
|
3
|
-
import { Setup
|
|
3
|
+
import { Setup } from './setup';
|
|
4
|
+
import { Hand, Hands } from './hand';
|
|
4
5
|
|
|
5
6
|
function rol32(n: number, left: number): number {
|
|
6
7
|
return (n << left) | (n >>> (32 - left));
|
|
@@ -17,19 +18,19 @@ export function hashBoard(board: Board, state = 0): number {
|
|
|
17
18
|
return state;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
export function
|
|
21
|
-
for (const role of
|
|
21
|
+
export function hashHand(hand: Hand, state = 0): number {
|
|
22
|
+
for (const role of ROLES) state = fxhash32(hand[role], state);
|
|
22
23
|
return state;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
export function
|
|
26
|
-
for (const color of COLORS) state =
|
|
26
|
+
export function hashHands(hands: Hands, state = 0): number {
|
|
27
|
+
for (const color of COLORS) state = hashHand(hands[color], state);
|
|
27
28
|
return state;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
export function hashSetup(setup: Setup, state = 0): number {
|
|
31
32
|
state = hashBoard(setup.board, state);
|
|
32
|
-
state =
|
|
33
|
+
state = hashHands(setup.hands, state);
|
|
33
34
|
if (setup.turn === 'sente') state = fxhash32(1, state);
|
|
34
35
|
return state;
|
|
35
36
|
}
|