shogiops 0.6.0 → 0.8.1
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/README.md +8 -12
- package/attacks.d.ts +2 -2
- package/attacks.js +50 -66
- package/attacks.js.map +1 -1
- package/board.d.ts +2 -5
- package/board.js +46 -63
- package/board.js.map +1 -1
- package/compat.d.ts +2 -4
- package/compat.js +13 -36
- package/compat.js.map +1 -1
- package/debug.d.ts +3 -6
- package/debug.js +14 -47
- package/debug.js.map +1 -1
- package/hand.d.ts +1 -1
- package/hand.js +10 -15
- package/hand.js.map +1 -1
- package/index.d.ts +18 -21
- package/index.js +19 -63
- package/index.js.map +1 -1
- package/notation/csa/csa.d.ts +6 -7
- package/notation/csa/csa.js +74 -96
- package/notation/csa/csa.js.map +1 -1
- package/notation/japanese.d.ts +2 -2
- package/notation/japanese.js +25 -29
- package/notation/japanese.js.map +1 -1
- package/notation/kif/kif.d.ts +11 -12
- package/notation/kif/kif.js +89 -113
- package/notation/kif/kif.js.map +1 -1
- package/notation/kif/kifHandicaps.js +2 -7
- package/notation/kif/kifHandicaps.js.map +1 -1
- package/notation/kitaoKawasaki.d.ts +2 -2
- package/notation/kitaoKawasaki.js +12 -16
- package/notation/kitaoKawasaki.js.map +1 -1
- package/notation/notationUtil.d.ts +3 -3
- package/notation/notationUtil.js +35 -36
- package/notation/notationUtil.js.map +1 -1
- package/notation/western.d.ts +2 -2
- package/notation/western.js +11 -15
- package/notation/western.js.map +1 -1
- package/notation/westernEngine.d.ts +2 -2
- package/notation/westernEngine.js +11 -15
- package/notation/westernEngine.js.map +1 -1
- package/package.json +16 -11
- package/sfen.d.ts +9 -18
- package/sfen.js +87 -94
- package/sfen.js.map +1 -1
- package/shogi.d.ts +5 -11
- package/shogi.js +124 -140
- package/shogi.js.map +1 -1
- package/squareSet.d.ts +15 -16
- package/squareSet.js +242 -175
- package/squareSet.js.map +1 -1
- package/src/attacks.ts +33 -31
- package/src/board.ts +33 -49
- package/src/compat.ts +3 -21
- package/src/debug.ts +6 -33
- package/src/hand.ts +1 -1
- package/src/index.ts +18 -24
- package/src/notation/csa/csa.ts +40 -45
- package/src/notation/japanese.ts +16 -16
- package/src/notation/kif/kif.ts +59 -67
- package/src/notation/kitaoKawasaki.ts +7 -7
- package/src/notation/notationUtil.ts +28 -17
- package/src/notation/western.ts +5 -5
- package/src/notation/westernEngine.ts +5 -5
- package/src/sfen.ts +65 -59
- package/src/shogi.ts +32 -44
- package/src/squareSet.ts +240 -158
- package/src/types.ts +25 -4
- package/src/util.ts +20 -14
- package/src/variant.ts +25 -16
- package/src/variantUtil.ts +25 -22
- package/types.d.ts +7 -3
- package/types.js +24 -13
- package/types.js.map +1 -1
- package/util.d.ts +2 -1
- package/util.js +40 -55
- package/util.js.map +1 -1
- package/variant.d.ts +7 -8
- package/variant.js +17 -28
- package/variant.js.map +1 -1
- package/variantUtil.d.ts +5 -5
- package/variantUtil.js +30 -41
- package/variantUtil.js.map +1 -1
- package/hash.d.ts +0 -8
- package/hash.js +0 -39
- package/hash.js.map +0 -1
- package/notation/kitaokawasaki.d.ts +0 -0
- package/notation/kitaokawasaki.js +0 -2
- package/notation/kitaokawasaki.js.map +0 -1
- package/setup.d.ts +0 -10
- package/setup.js +0 -15
- package/setup.js.map +0 -1
- package/src/hash.ts +0 -36
- package/src/setup.ts +0 -19
- package/src/transform.ts +0 -42
- package/transform.d.ts +0 -8
- package/transform.js +0 -47
- package/transform.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
# shogiops
|
|
2
2
|
|
|
3
3
|
[](https://github.com/WandererXII/shogiops/actions)
|
|
4
|
+
[](https://www.npmjs.com/package/shogiops)
|
|
4
5
|
|
|
5
|
-
Shogi and operations in TypeScript forked from [chessops](https://github.com/niklasf/chessops).
|
|
6
|
+
Shogi and operations in TypeScript forked from [chessops](https://github.com/niklasf/chessops), rewritten for shogi.
|
|
6
7
|
|
|
7
8
|
## Features
|
|
8
9
|
|
|
9
10
|
- Read and write SFEN
|
|
10
|
-
- Vocabulary (Square, SquareSet, Color, Role, Piece, Board,
|
|
11
|
+
- Vocabulary (Square, SquareSet, Color, Role, Piece, Board, Position)
|
|
11
12
|
- Shogi
|
|
12
13
|
- Move making
|
|
13
14
|
- Legal move and drop move generation
|
|
14
15
|
- Game end and outcome
|
|
15
16
|
- Setup validation
|
|
16
17
|
- Attacks and rays using hyperbola quintessence
|
|
17
|
-
- Read and write USI move notation
|
|
18
|
-
- Read and write KIF notation
|
|
19
|
-
-
|
|
20
|
-
- Write various move notations
|
|
18
|
+
- Read and write USI, Japanese, Western and Kitao-Kawasaki move notation
|
|
19
|
+
- Read and write KIF and CSA notation
|
|
20
|
+
- Currently two variants supported - shogi, minishogi. More to come later!
|
|
21
21
|
- [Compatibility with lishogi](https://lishogi.org)
|
|
22
|
-
- [Compatibility with shogiground](https://github.com/WandererXII/
|
|
23
|
-
|
|
24
|
-
#### Not yet fully supported:
|
|
25
|
-
|
|
26
|
-
- Position hashing
|
|
22
|
+
- [Compatibility with shogiground](https://github.com/WandererXII/shogiground)
|
|
27
23
|
|
|
28
24
|
[File an issue](https://github.com/WandererXII/shogiops/issues/new) to request more or report a bug.
|
|
29
25
|
|
|
30
26
|
## Example
|
|
31
27
|
|
|
32
|
-
Test directory has a lot of examples.
|
|
28
|
+
Test directory has a lot of examples and use-cases.
|
|
33
29
|
|
|
34
30
|
```javascript
|
|
35
31
|
import { parseUsi } from 'shogiops/util';
|
package/attacks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Square, Piece, Color } from './types';
|
|
2
|
-
import { SquareSet } from './squareSet';
|
|
1
|
+
import { Square, Piece, Color } from './types.js';
|
|
2
|
+
import { SquareSet } from './squareSet.js';
|
|
3
3
|
export declare function kingAttacks(square: Square): SquareSet;
|
|
4
4
|
export declare function knightAttacks(color: Color, square: Square): SquareSet;
|
|
5
5
|
export declare function silverAttacks(color: Color, square: Square): SquareSet;
|
package/attacks.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.between = exports.ray = exports.attacks = exports.dragonAttacks = exports.horseAttacks = exports.lanceAttacks = exports.rookAttacks = exports.bishopAttacks = exports.pawnAttacks = exports.goldAttacks = exports.silverAttacks = exports.knightAttacks = exports.kingAttacks = void 0;
|
|
4
|
-
const util_1 = require("./util");
|
|
5
|
-
const squareSet_1 = require("./squareSet");
|
|
1
|
+
import { squareFile, squareRank } from './util.js';
|
|
2
|
+
import { SquareSet } from './squareSet.js';
|
|
6
3
|
function computeRange(square, deltas) {
|
|
7
|
-
let range =
|
|
4
|
+
let range = SquareSet.empty();
|
|
8
5
|
for (const delta of deltas) {
|
|
9
6
|
const sq = square + delta;
|
|
10
|
-
if (0 <= sq && sq <
|
|
7
|
+
if (0 <= sq && sq < 256 && Math.abs(squareFile(square) - squareFile(sq)) <= 2) {
|
|
11
8
|
range = range.with(sq);
|
|
12
9
|
}
|
|
13
10
|
}
|
|
@@ -15,103 +12,93 @@ function computeRange(square, deltas) {
|
|
|
15
12
|
}
|
|
16
13
|
function tabulate(f) {
|
|
17
14
|
const table = [];
|
|
18
|
-
for (let square = 0; square <
|
|
15
|
+
for (let square = 0; square < 256; square++)
|
|
19
16
|
table[square] = f(square);
|
|
20
17
|
return table;
|
|
21
18
|
}
|
|
22
|
-
const KING_ATTACKS = tabulate(sq => computeRange(sq, [-
|
|
19
|
+
const KING_ATTACKS = tabulate(sq => computeRange(sq, [-17, -16, -15, -1, 1, 15, 16, 17]));
|
|
23
20
|
const KNIGHT_ATTACKS = {
|
|
24
|
-
sente: tabulate(sq => computeRange(sq, [
|
|
25
|
-
gote: tabulate(sq => computeRange(sq, [
|
|
21
|
+
sente: tabulate(sq => computeRange(sq, [-31, -33])),
|
|
22
|
+
gote: tabulate(sq => computeRange(sq, [31, 33])),
|
|
26
23
|
};
|
|
27
24
|
const PAWN_ATTACKS = {
|
|
28
|
-
sente: tabulate(sq => computeRange(sq, [
|
|
29
|
-
gote: tabulate(sq => computeRange(sq, [
|
|
25
|
+
sente: tabulate(sq => computeRange(sq, [-16])),
|
|
26
|
+
gote: tabulate(sq => computeRange(sq, [16])),
|
|
30
27
|
};
|
|
31
28
|
const SILVER_ATTACKS = {
|
|
32
|
-
sente: tabulate(sq => computeRange(sq, [
|
|
33
|
-
gote: tabulate(sq => computeRange(sq, [
|
|
29
|
+
sente: tabulate(sq => computeRange(sq, [17, 15, -15, -16, -17])),
|
|
30
|
+
gote: tabulate(sq => computeRange(sq, [17, 16, 15, -15, -17])),
|
|
34
31
|
};
|
|
35
32
|
const GOLD_ATTACKS = {
|
|
36
|
-
sente: tabulate(sq => computeRange(sq, [
|
|
37
|
-
gote: tabulate(sq => computeRange(sq, [
|
|
33
|
+
sente: tabulate(sq => computeRange(sq, [16, 1, -1, -15, -16, -17])),
|
|
34
|
+
gote: tabulate(sq => computeRange(sq, [17, 16, 15, 1, -1, -16])),
|
|
38
35
|
};
|
|
39
|
-
function kingAttacks(square) {
|
|
36
|
+
export function kingAttacks(square) {
|
|
40
37
|
return KING_ATTACKS[square];
|
|
41
38
|
}
|
|
42
|
-
|
|
43
|
-
function knightAttacks(color, square) {
|
|
39
|
+
export function knightAttacks(color, square) {
|
|
44
40
|
return KNIGHT_ATTACKS[color][square];
|
|
45
41
|
}
|
|
46
|
-
|
|
47
|
-
function silverAttacks(color, square) {
|
|
42
|
+
export function silverAttacks(color, square) {
|
|
48
43
|
return SILVER_ATTACKS[color][square];
|
|
49
44
|
}
|
|
50
|
-
|
|
51
|
-
function goldAttacks(color, square) {
|
|
45
|
+
export function goldAttacks(color, square) {
|
|
52
46
|
return GOLD_ATTACKS[color][square];
|
|
53
47
|
}
|
|
54
|
-
|
|
55
|
-
function pawnAttacks(color, square) {
|
|
48
|
+
export function pawnAttacks(color, square) {
|
|
56
49
|
return PAWN_ATTACKS[color][square];
|
|
57
50
|
}
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const BACK_RANGE = tabulate(sq => squareSet_1.SquareSet.backwardRanks((0, util_1.squareRank)(sq)).without(sq));
|
|
51
|
+
const FILE_RANGE = tabulate(sq => SquareSet.fromFile(squareFile(sq)).without(sq));
|
|
52
|
+
const RANK_RANGE = tabulate(sq => SquareSet.fromRank(squareRank(sq)).without(sq));
|
|
53
|
+
const FORW_RANGE = tabulate(sq => SquareSet.ranksAbove(squareRank(sq)).without(sq));
|
|
54
|
+
const BACK_RANGE = tabulate(sq => SquareSet.ranksBelow(squareRank(sq)).without(sq));
|
|
63
55
|
const DIAG_RANGE = tabulate(sq => {
|
|
64
|
-
const diag = new
|
|
65
|
-
const shift =
|
|
66
|
-
return (shift >= 0 ? diag.
|
|
56
|
+
const diag = new SquareSet([0x20001, 0x80004, 0x200010, 0x800040, 0x2000100, 0x8000400, 0x20001000, 0x80004000]);
|
|
57
|
+
const shift = 16 * (squareRank(sq) - squareFile(sq));
|
|
58
|
+
return (shift >= 0 ? diag.shl256(shift) : diag.shr256(-shift)).without(sq);
|
|
67
59
|
});
|
|
68
60
|
const ANTI_DIAG_RANGE = tabulate(sq => {
|
|
69
|
-
const diag = new
|
|
70
|
-
const shift =
|
|
71
|
-
return (shift >= 0 ? diag.
|
|
61
|
+
const diag = new SquareSet([0x40008000, 0x10002000, 0x4000800, 0x1000200, 0x400080, 0x100020, 0x40008, 0x10002]);
|
|
62
|
+
const shift = 16 * (squareRank(sq) + squareFile(sq) - 15);
|
|
63
|
+
return (shift >= 0 ? diag.shl256(shift) : diag.shr256(-shift)).without(sq);
|
|
72
64
|
});
|
|
73
65
|
function hyperbola(bit, range, occupied) {
|
|
74
66
|
let forward = occupied.intersect(range);
|
|
75
|
-
let reverse = forward.
|
|
76
|
-
forward = forward.
|
|
77
|
-
reverse = reverse.
|
|
78
|
-
return forward.xor(reverse.
|
|
67
|
+
let reverse = forward.rowSwap256(); // Assumes no more than 1 bit per rank
|
|
68
|
+
forward = forward.minus256(bit);
|
|
69
|
+
reverse = reverse.minus256(bit.rowSwap256());
|
|
70
|
+
return forward.xor(reverse.rowSwap256()).intersect(range);
|
|
79
71
|
}
|
|
80
72
|
function fileAttacks(square, occupied) {
|
|
81
|
-
return hyperbola(
|
|
73
|
+
return hyperbola(SquareSet.fromSquare(square), FILE_RANGE[square], occupied);
|
|
82
74
|
}
|
|
83
75
|
function rankAttacks(square, occupied) {
|
|
84
76
|
const range = RANK_RANGE[square];
|
|
85
77
|
let forward = occupied.intersect(range);
|
|
86
|
-
let reverse = forward.
|
|
87
|
-
forward = forward.
|
|
88
|
-
reverse = reverse.
|
|
89
|
-
return forward.xor(reverse.
|
|
78
|
+
let reverse = forward.rbit256();
|
|
79
|
+
forward = forward.minus256(SquareSet.fromSquare(square));
|
|
80
|
+
reverse = reverse.minus256(SquareSet.fromSquare(255 - square));
|
|
81
|
+
return forward.xor(reverse.rbit256()).intersect(range);
|
|
90
82
|
}
|
|
91
|
-
function bishopAttacks(square, occupied) {
|
|
92
|
-
const bit =
|
|
83
|
+
export function bishopAttacks(square, occupied) {
|
|
84
|
+
const bit = SquareSet.fromSquare(square);
|
|
93
85
|
return hyperbola(bit, DIAG_RANGE[square], occupied).xor(hyperbola(bit, ANTI_DIAG_RANGE[square], occupied));
|
|
94
86
|
}
|
|
95
|
-
|
|
96
|
-
function rookAttacks(square, occupied) {
|
|
87
|
+
export function rookAttacks(square, occupied) {
|
|
97
88
|
return fileAttacks(square, occupied).xor(rankAttacks(square, occupied));
|
|
98
89
|
}
|
|
99
|
-
|
|
100
|
-
function lanceAttacks(color, square, occupied) {
|
|
90
|
+
export function lanceAttacks(color, square, occupied) {
|
|
101
91
|
return color === 'sente'
|
|
102
92
|
? fileAttacks(square, occupied).intersect(FORW_RANGE[square])
|
|
103
93
|
: fileAttacks(square, occupied).intersect(BACK_RANGE[square]);
|
|
104
94
|
}
|
|
105
|
-
|
|
106
|
-
function horseAttacks(square, occupied) {
|
|
95
|
+
export function horseAttacks(square, occupied) {
|
|
107
96
|
return bishopAttacks(square, occupied).union(kingAttacks(square));
|
|
108
97
|
}
|
|
109
|
-
|
|
110
|
-
function dragonAttacks(square, occupied) {
|
|
98
|
+
export function dragonAttacks(square, occupied) {
|
|
111
99
|
return rookAttacks(square, occupied).union(kingAttacks(square));
|
|
112
100
|
}
|
|
113
|
-
|
|
114
|
-
function attacks(piece, square, occupied) {
|
|
101
|
+
export function attacks(piece, square, occupied) {
|
|
115
102
|
switch (piece.role) {
|
|
116
103
|
case 'pawn':
|
|
117
104
|
return pawnAttacks(piece.color, square);
|
|
@@ -139,9 +126,8 @@ function attacks(piece, square, occupied) {
|
|
|
139
126
|
return kingAttacks(square);
|
|
140
127
|
}
|
|
141
128
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const other = squareSet_1.SquareSet.fromSquare(b);
|
|
129
|
+
export function ray(a, b) {
|
|
130
|
+
const other = SquareSet.fromSquare(b);
|
|
145
131
|
if (RANK_RANGE[a].intersects(other))
|
|
146
132
|
return RANK_RANGE[a].with(a);
|
|
147
133
|
if (ANTI_DIAG_RANGE[a].intersects(other))
|
|
@@ -150,13 +136,11 @@ function ray(a, b) {
|
|
|
150
136
|
return DIAG_RANGE[a].with(a);
|
|
151
137
|
if (FILE_RANGE[a].intersects(other))
|
|
152
138
|
return FILE_RANGE[a].with(a);
|
|
153
|
-
return
|
|
139
|
+
return SquareSet.empty();
|
|
154
140
|
}
|
|
155
|
-
|
|
156
|
-
function between(a, b) {
|
|
141
|
+
export function between(a, b) {
|
|
157
142
|
return ray(a, b)
|
|
158
|
-
.intersect(
|
|
143
|
+
.intersect(SquareSet.full().shl256(a).xor(SquareSet.full().shl256(b)))
|
|
159
144
|
.withoutFirst();
|
|
160
145
|
}
|
|
161
|
-
exports.between = between;
|
|
162
146
|
//# sourceMappingURL=attacks.js.map
|
package/attacks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attacks.js","sourceRoot":"","sources":["src/attacks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attacks.js","sourceRoot":"","sources":["src/attacks.ts"],"names":[],"mappings":"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"}
|
package/board.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { Square, Color, Role, Piece } from './types';
|
|
2
|
-
import { SquareSet } from './squareSet';
|
|
1
|
+
import { Square, Color, Role, Piece } from './types.js';
|
|
2
|
+
import { SquareSet } from './squareSet.js';
|
|
3
3
|
export declare class Board implements Iterable<[Square, Piece]> {
|
|
4
|
-
numberOfFiles: number;
|
|
5
|
-
numberOfRanks: number;
|
|
6
4
|
occupied: SquareSet;
|
|
7
5
|
gote: SquareSet;
|
|
8
6
|
sente: SquareSet;
|
|
@@ -25,7 +23,6 @@ export declare class Board implements Iterable<[Square, Piece]> {
|
|
|
25
23
|
reset(): void;
|
|
26
24
|
static minishogi(): Board;
|
|
27
25
|
static empty(): Board;
|
|
28
|
-
clear(): void;
|
|
29
26
|
clone(): Board;
|
|
30
27
|
equals(other: Board): boolean;
|
|
31
28
|
getColor(square: Square): Color | undefined;
|
package/board.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("./types");
|
|
5
|
-
const squareSet_1 = require("./squareSet");
|
|
6
|
-
class Board {
|
|
1
|
+
import { COLORS, ROLES } from './types.js';
|
|
2
|
+
import { SquareSet } from './squareSet.js';
|
|
3
|
+
export class Board {
|
|
7
4
|
constructor() { }
|
|
8
5
|
static default() {
|
|
9
6
|
const board = new Board();
|
|
@@ -11,80 +8,67 @@ class Board {
|
|
|
11
8
|
return board;
|
|
12
9
|
}
|
|
13
10
|
reset() {
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
31
|
-
this.horse = squareSet_1.SquareSet.empty();
|
|
32
|
-
this.dragon = squareSet_1.SquareSet.empty();
|
|
11
|
+
this.occupied = new SquareSet([0x8201ff, 0x1ff, 0x0, 0x8201ff, 0x1ff, 0x0, 0x0, 0x0]);
|
|
12
|
+
this.sente = new SquareSet([0x0, 0x0, 0x0, 0x8201ff, 0x1ff, 0x0, 0x0, 0x0]);
|
|
13
|
+
this.gote = new SquareSet([0x8201ff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
14
|
+
this.pawn = new SquareSet([0x0, 0x1ff, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0]);
|
|
15
|
+
this.lance = new SquareSet([0x101, 0x0, 0x0, 0x0, 0x101, 0x0, 0x0, 0x0]);
|
|
16
|
+
this.knight = new SquareSet([0x82, 0x0, 0x0, 0x0, 0x82, 0x0, 0x0, 0x0]);
|
|
17
|
+
this.silver = new SquareSet([0x44, 0x0, 0x0, 0x0, 0x44, 0x0, 0x0, 0x0]);
|
|
18
|
+
this.gold = new SquareSet([0x28, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0]);
|
|
19
|
+
this.bishop = new SquareSet([0x20000, 0x0, 0x0, 0x800000, 0x0, 0x0, 0x0, 0x0]);
|
|
20
|
+
this.rook = new SquareSet([0x800000, 0x0, 0x0, 0x20000, 0x0, 0x0, 0x0, 0x0]);
|
|
21
|
+
this.king = new SquareSet([0x10, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0]);
|
|
22
|
+
this.tokin = SquareSet.empty();
|
|
23
|
+
this.promotedlance = SquareSet.empty();
|
|
24
|
+
this.promotedknight = SquareSet.empty();
|
|
25
|
+
this.promotedsilver = SquareSet.empty();
|
|
26
|
+
this.horse = SquareSet.empty();
|
|
27
|
+
this.dragon = SquareSet.empty();
|
|
33
28
|
}
|
|
34
29
|
static minishogi() {
|
|
35
30
|
const board = new Board();
|
|
36
|
-
board.
|
|
37
|
-
board.
|
|
38
|
-
board.
|
|
39
|
-
board.
|
|
40
|
-
board.
|
|
41
|
-
board.
|
|
42
|
-
board.
|
|
43
|
-
board.
|
|
44
|
-
board.
|
|
45
|
-
board.
|
|
46
|
-
board.
|
|
47
|
-
board.
|
|
48
|
-
board.
|
|
49
|
-
board.
|
|
50
|
-
board.
|
|
51
|
-
board.
|
|
52
|
-
board.
|
|
53
|
-
board.dragon = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
54
|
-
board.king = new squareSet_1.SquareSet(0x0, 0x2000, 0x4000000);
|
|
31
|
+
board.occupied = new SquareSet([0x1001f, 0x100000, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
32
|
+
board.sente = new SquareSet([0x0, 0x100000, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
33
|
+
board.gote = new SquareSet([0x1001f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
34
|
+
board.pawn = new SquareSet([0x10000, 0x100000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
35
|
+
board.lance = SquareSet.empty();
|
|
36
|
+
board.knight = SquareSet.empty();
|
|
37
|
+
board.silver = new SquareSet([0x4, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
38
|
+
board.gold = new SquareSet([0x2, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
39
|
+
board.bishop = new SquareSet([0x8, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
40
|
+
board.rook = new SquareSet([0x10, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
41
|
+
board.king = new SquareSet([0x1, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0]);
|
|
42
|
+
board.tokin = SquareSet.empty();
|
|
43
|
+
board.promotedlance = SquareSet.empty();
|
|
44
|
+
board.promotedknight = SquareSet.empty();
|
|
45
|
+
board.promotedsilver = SquareSet.empty();
|
|
46
|
+
board.horse = SquareSet.empty();
|
|
47
|
+
board.dragon = SquareSet.empty();
|
|
55
48
|
return board;
|
|
56
49
|
}
|
|
57
50
|
static empty() {
|
|
58
51
|
const board = new Board();
|
|
59
|
-
board.
|
|
52
|
+
board.occupied = SquareSet.empty();
|
|
53
|
+
for (const color of COLORS)
|
|
54
|
+
board[color] = SquareSet.empty();
|
|
55
|
+
for (const role of ROLES)
|
|
56
|
+
board[role] = SquareSet.empty();
|
|
60
57
|
return board;
|
|
61
58
|
}
|
|
62
|
-
clear() {
|
|
63
|
-
this.numberOfFiles = 9;
|
|
64
|
-
this.numberOfRanks = 9;
|
|
65
|
-
this.occupied = squareSet_1.SquareSet.empty();
|
|
66
|
-
for (const color of types_1.COLORS)
|
|
67
|
-
this[color] = squareSet_1.SquareSet.empty();
|
|
68
|
-
for (const role of types_1.ROLES)
|
|
69
|
-
this[role] = squareSet_1.SquareSet.empty();
|
|
70
|
-
}
|
|
71
59
|
clone() {
|
|
72
60
|
const board = new Board();
|
|
73
61
|
board.occupied = this.occupied;
|
|
74
|
-
|
|
75
|
-
board.numberOfRanks = this.numberOfRanks;
|
|
76
|
-
for (const color of types_1.COLORS)
|
|
62
|
+
for (const color of COLORS)
|
|
77
63
|
board[color] = this[color];
|
|
78
|
-
for (const role of
|
|
64
|
+
for (const role of ROLES)
|
|
79
65
|
board[role] = this[role];
|
|
80
66
|
return board;
|
|
81
67
|
}
|
|
82
68
|
equals(other) {
|
|
83
69
|
if (!this.gote.equals(other.gote))
|
|
84
70
|
return false;
|
|
85
|
-
|
|
86
|
-
return false;
|
|
87
|
-
return types_1.ROLES.every(role => this[role].equals(other[role]));
|
|
71
|
+
return ROLES.every(role => this[role].equals(other[role]));
|
|
88
72
|
}
|
|
89
73
|
getColor(square) {
|
|
90
74
|
if (this.sente.has(square))
|
|
@@ -94,7 +78,7 @@ class Board {
|
|
|
94
78
|
return;
|
|
95
79
|
}
|
|
96
80
|
getRole(square) {
|
|
97
|
-
for (const role of
|
|
81
|
+
for (const role of ROLES) {
|
|
98
82
|
if (this[role].has(square))
|
|
99
83
|
return role;
|
|
100
84
|
}
|
|
@@ -138,5 +122,4 @@ class Board {
|
|
|
138
122
|
return this.king.intersect(this[color]).singleSquare();
|
|
139
123
|
}
|
|
140
124
|
}
|
|
141
|
-
exports.Board = Board;
|
|
142
125
|
//# sourceMappingURL=board.js.map
|
package/board.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["src/board.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["src/board.ts"],"names":[],"mappings":"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"}
|
package/compat.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Position } from './shogi';
|
|
1
|
+
import { SquareName, Move, Role } from './types.js';
|
|
2
|
+
import { Position } from './shogi.js';
|
|
3
3
|
export declare function shogigroundDests(pos: Position): Map<SquareName, SquareName[]>;
|
|
4
4
|
export declare function shogigroundDropDests(pos: Position, role?: Role): Map<Role, SquareName[]>;
|
|
5
|
-
export declare function scalashogiCharPair(move: Move): string;
|
|
6
5
|
export declare function usiToSquareNames(usi: string): SquareName[];
|
|
7
6
|
export declare function moveToSquareNames(move: Move): SquareName[];
|
|
8
|
-
export declare function lishogiVariantRules(variant: string): Rules;
|
package/compat.js
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("./types");
|
|
5
|
-
const util_1 = require("./util");
|
|
6
|
-
function shogigroundDests(pos) {
|
|
1
|
+
import { isDrop } from './types.js';
|
|
2
|
+
import { defined, makeSquare, parseUsi } from './util.js';
|
|
3
|
+
export function shogigroundDests(pos) {
|
|
7
4
|
const result = new Map();
|
|
8
5
|
const ctx = pos.ctx();
|
|
9
6
|
for (const [from, squares] of pos.allDests(ctx)) {
|
|
10
7
|
if (squares.nonEmpty()) {
|
|
11
|
-
const d = Array.from(squares, s =>
|
|
12
|
-
result.set(
|
|
8
|
+
const d = Array.from(squares, s => makeSquare(s));
|
|
9
|
+
result.set(makeSquare(from), d);
|
|
13
10
|
}
|
|
14
11
|
}
|
|
15
12
|
return result;
|
|
16
13
|
}
|
|
17
|
-
|
|
18
|
-
function shogigroundDropDests(pos, role) {
|
|
14
|
+
export function shogigroundDropDests(pos, role) {
|
|
19
15
|
const result = new Map();
|
|
20
16
|
if (role) {
|
|
21
17
|
const squares = pos.dropDests(role);
|
|
22
18
|
if (squares.nonEmpty()) {
|
|
23
|
-
const d = Array.from(squares, s =>
|
|
19
|
+
const d = Array.from(squares, s => makeSquare(s));
|
|
24
20
|
result.set(role, d);
|
|
25
21
|
}
|
|
26
22
|
}
|
|
@@ -28,37 +24,18 @@ function shogigroundDropDests(pos, role) {
|
|
|
28
24
|
const ctx = pos.ctx();
|
|
29
25
|
for (const [r, squares] of pos.allDropDests(ctx)) {
|
|
30
26
|
if (squares.nonEmpty()) {
|
|
31
|
-
const d = Array.from(squares, s =>
|
|
27
|
+
const d = Array.from(squares, s => makeSquare(s));
|
|
32
28
|
result.set(r, d);
|
|
33
29
|
}
|
|
34
30
|
}
|
|
35
31
|
}
|
|
36
32
|
return result;
|
|
37
33
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return String.fromCharCode(34 + move.to, 34 + 81 + 128 + ['rook', 'bishop', 'knight', 'pawn', 'gold', 'silver', 'lance'].indexOf(move.role));
|
|
42
|
-
else
|
|
43
|
-
return String.fromCharCode(34 + move.from, move.promotion ? 34 + move.to + 128 : 34 + move.to);
|
|
34
|
+
export function usiToSquareNames(usi) {
|
|
35
|
+
const move = parseUsi(usi);
|
|
36
|
+
return defined(move) ? moveToSquareNames(move) : [];
|
|
44
37
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const move = (0, util_1.parseUsi)(usi);
|
|
48
|
-
return (0, util_1.defined)(move) ? moveToSquareNames(move) : [];
|
|
38
|
+
export function moveToSquareNames(move) {
|
|
39
|
+
return isDrop(move) ? [makeSquare(move.to)] : [makeSquare(move.from), makeSquare(move.to)];
|
|
49
40
|
}
|
|
50
|
-
exports.usiToSquareNames = usiToSquareNames;
|
|
51
|
-
function moveToSquareNames(move) {
|
|
52
|
-
return (0, types_1.isDrop)(move) ? [(0, util_1.makeSquare)(move.to)] : [(0, util_1.makeSquare)(move.from), (0, util_1.makeSquare)(move.to)];
|
|
53
|
-
}
|
|
54
|
-
exports.moveToSquareNames = moveToSquareNames;
|
|
55
|
-
function lishogiVariantRules(variant) {
|
|
56
|
-
switch (variant) {
|
|
57
|
-
case 'minishogi':
|
|
58
|
-
return 'minishogi';
|
|
59
|
-
default:
|
|
60
|
-
return 'shogi';
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.lishogiVariantRules = lishogiVariantRules;
|
|
64
41
|
//# sourceMappingURL=compat.js.map
|
package/compat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compat.js","sourceRoot":"","sources":["src/compat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compat.js","sourceRoot":"","sources":["src/compat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAQ,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1D,MAAM,UAAU,gBAAgB,CAAC,GAAa;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC/C,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACjC;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAa,EAAE,IAAW;IAC7D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,IAAI,IAAI,EAAE;QACR,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACrB;KACF;SAAM;QACL,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YAChD,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;gBACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAClB;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAU;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC"}
|
package/debug.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { Square, Piece } from './types';
|
|
2
|
-
import { SquareSet } from './squareSet';
|
|
3
|
-
import {
|
|
4
|
-
import { Position } from './shogi';
|
|
5
|
-
export declare function squareSet(squares: SquareSet): string;
|
|
1
|
+
import { Square, Piece } from './types.js';
|
|
2
|
+
import { SquareSet } from './squareSet.js';
|
|
3
|
+
import { Position } from './shogi.js';
|
|
6
4
|
export declare function piece(piece: Piece): string;
|
|
7
|
-
export declare function board(board: Board): string;
|
|
8
5
|
export declare function square(sq: Square): string;
|
|
9
6
|
export declare function dests(dests: Map<Square, SquareSet>): string;
|
|
10
7
|
export declare function perft(pos: Position, depth: number, log?: boolean): number;
|