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/variant.js
CHANGED
|
@@ -1,23 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "IllegalSetup", { enumerable: true, get: function () { return shogi_1.IllegalSetup; } });
|
|
8
|
-
Object.defineProperty(exports, "Shogi", { enumerable: true, get: function () { return shogi_1.Shogi; } });
|
|
9
|
-
function defaultPosition(rules) {
|
|
1
|
+
import { PositionError, Position, IllegalSetup, Shogi } from './shogi';
|
|
2
|
+
import { SquareSet } from './squareSet';
|
|
3
|
+
import { Board } from './board';
|
|
4
|
+
import { Hands } from './hand';
|
|
5
|
+
export { Position, PositionError, IllegalSetup, Shogi };
|
|
6
|
+
export function defaultPosition(rules) {
|
|
10
7
|
switch (rules) {
|
|
11
|
-
case '
|
|
12
|
-
return
|
|
8
|
+
case 'minishogi':
|
|
9
|
+
return Minishogi.default();
|
|
10
|
+
default:
|
|
11
|
+
return Shogi.default();
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
function setupPosition(rules, setup, strict = true) {
|
|
14
|
+
export function setupPosition(rules, setup, strict = true) {
|
|
17
15
|
switch (rules) {
|
|
18
|
-
case '
|
|
19
|
-
return
|
|
16
|
+
case 'minishogi':
|
|
17
|
+
return Minishogi.fromSetup(setup, strict);
|
|
18
|
+
default:
|
|
19
|
+
return Shogi.fromSetup(setup, strict);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class Minishogi extends Shogi {
|
|
23
|
+
constructor() {
|
|
24
|
+
super('minishogi');
|
|
25
|
+
this.numberOfRanks = 5;
|
|
26
|
+
this.numberOfFiles = 5;
|
|
27
|
+
}
|
|
28
|
+
static default() {
|
|
29
|
+
const pos = new this();
|
|
30
|
+
pos.board = Board.minishogi();
|
|
31
|
+
pos.hands = Hands.empty();
|
|
32
|
+
pos.turn = 'sente';
|
|
33
|
+
pos.fullmoves = 1;
|
|
34
|
+
return pos;
|
|
35
|
+
}
|
|
36
|
+
static fromSetup(setup, strict) {
|
|
37
|
+
return super.fromSetup(setup, strict);
|
|
38
|
+
}
|
|
39
|
+
clone() {
|
|
40
|
+
return super.clone();
|
|
41
|
+
}
|
|
42
|
+
dests(square, ctx) {
|
|
43
|
+
return super.dests(square, ctx).intersect(new SquareSet(0x0, 0x7c3e000, 0x7c3e1f0));
|
|
44
|
+
}
|
|
45
|
+
dropDests(role, ctx) {
|
|
46
|
+
return super.dropDests(role, ctx).intersect(new SquareSet(0x0, 0x7c3e000, 0x7c3e1f0));
|
|
20
47
|
}
|
|
21
48
|
}
|
|
22
|
-
exports.setupPosition = setupPosition;
|
|
23
49
|
//# sourceMappingURL=variant.js.map
|
package/variant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant.js","sourceRoot":"","sources":["src/variant.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"variant.js","sourceRoot":"","sources":["src/variant.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAW,KAAK,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAW,KAAK,EAAE,CAAC;AAEjE,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7B;YACE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;KAC1B;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAM,GAAG,IAAI;IACrE,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C;YACE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KACzC;AACH,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC;QACE,KAAK,CAAC,WAAW,CAAC,CAAC;QAGrB,kBAAa,GAAG,CAAC,CAAC;QAClB,kBAAa,GAAG,CAAC,CAAC;IAHlB,CAAC;IAKD,MAAM,CAAC,OAAO;QACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;QACnB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,MAAe;QAC5C,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAqC,CAAC;IAC5E,CAAC;IAED,KAAK;QACH,OAAO,KAAK,CAAC,KAAK,EAAe,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAa;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,SAAS,CAAC,IAAU,EAAE,GAAa;QACjC,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACxF,CAAC;CACF"}
|
package/variantUtil.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Piece, Square } from '.';
|
|
2
|
+
import { SquareSet } from './squareSet';
|
|
3
|
+
import { Color, Role, Rules } from './types';
|
|
4
|
+
export declare function pieceCanPromote(rules: Rules): (piece: Piece, from: Square, to: Square) => boolean;
|
|
5
|
+
export declare function pieceInDeadZone(rules: Rules): (piece: Piece, sq: Square) => boolean;
|
|
6
|
+
export declare function allRoles(rules: Rules): Role[];
|
|
7
|
+
export declare function handRoles(rules: Rules): Role[];
|
|
8
|
+
export declare function promotableRoles(rules: Rules): Role[];
|
|
9
|
+
export declare function promote(rules: Rules): (role: Role) => Role;
|
|
10
|
+
export declare function unpromote(rules: Rules): (role: Role) => Role;
|
|
11
|
+
export declare function promotionZone(rules: Rules): (color: Color) => SquareSet;
|
|
12
|
+
export declare function backrank(rules: Rules): (color: Color) => SquareSet;
|
|
13
|
+
export declare function secondBackrank(rules: Rules): (color: Color) => SquareSet;
|
package/variantUtil.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { SquareSet } from './squareSet';
|
|
2
|
+
export function pieceCanPromote(rules) {
|
|
3
|
+
switch (rules) {
|
|
4
|
+
default:
|
|
5
|
+
return (piece, from, to) => promotableRoles(rules).includes(piece.role) &&
|
|
6
|
+
(promotionZone(rules)(piece.color).has(from) || promotionZone(rules)(piece.color).has(to));
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function pieceInDeadZone(rules) {
|
|
10
|
+
switch (rules) {
|
|
11
|
+
default:
|
|
12
|
+
return (piece, sq) => {
|
|
13
|
+
if (piece.role === 'lance' || piece.role === 'pawn')
|
|
14
|
+
return backrank(rules)(piece.color).intersect(SquareSet.fromSquare(sq)).nonEmpty();
|
|
15
|
+
if (piece.role === 'knight')
|
|
16
|
+
return secondBackrank(rules)(piece.color)
|
|
17
|
+
.union(backrank(rules)(piece.color))
|
|
18
|
+
.intersect(SquareSet.fromSquare(sq))
|
|
19
|
+
.nonEmpty();
|
|
20
|
+
return false;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function allRoles(rules) {
|
|
25
|
+
switch (rules) {
|
|
26
|
+
case 'minishogi':
|
|
27
|
+
return ['rook', 'bishop', 'gold', 'silver', 'pawn', 'king', 'dragon', 'horse', 'promotedsilver', 'tokin'];
|
|
28
|
+
default:
|
|
29
|
+
return [
|
|
30
|
+
'rook',
|
|
31
|
+
'bishop',
|
|
32
|
+
'gold',
|
|
33
|
+
'silver',
|
|
34
|
+
'knight',
|
|
35
|
+
'lance',
|
|
36
|
+
'pawn',
|
|
37
|
+
'dragon',
|
|
38
|
+
'horse',
|
|
39
|
+
'tokin',
|
|
40
|
+
'promotedsilver',
|
|
41
|
+
'promotedknight',
|
|
42
|
+
'promotedlance',
|
|
43
|
+
'king',
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function handRoles(rules) {
|
|
48
|
+
switch (rules) {
|
|
49
|
+
case 'minishogi':
|
|
50
|
+
return ['rook', 'bishop', 'gold', 'silver', 'pawn'];
|
|
51
|
+
default:
|
|
52
|
+
return ['rook', 'bishop', 'gold', 'silver', 'knight', 'lance', 'pawn'];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function promotableRoles(rules) {
|
|
56
|
+
switch (rules) {
|
|
57
|
+
case 'minishogi':
|
|
58
|
+
return ['pawn', 'silver', 'bishop', 'rook'];
|
|
59
|
+
default:
|
|
60
|
+
return ['pawn', 'lance', 'knight', 'silver', 'bishop', 'rook'];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function promote(rules) {
|
|
64
|
+
switch (rules) {
|
|
65
|
+
case 'minishogi':
|
|
66
|
+
return standardPromote;
|
|
67
|
+
default:
|
|
68
|
+
return standardPromote;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function unpromote(rules) {
|
|
72
|
+
switch (rules) {
|
|
73
|
+
case 'minishogi':
|
|
74
|
+
return standardUnpromote;
|
|
75
|
+
default:
|
|
76
|
+
return standardUnpromote;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export function promotionZone(rules) {
|
|
80
|
+
switch (rules) {
|
|
81
|
+
case 'minishogi':
|
|
82
|
+
return (color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(4));
|
|
83
|
+
default:
|
|
84
|
+
return (color) => (color === 'sente' ? new SquareSet(0, 0, 0x07ffffff) : new SquareSet(0x07ffffff, 0, 0));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export function backrank(rules) {
|
|
88
|
+
switch (rules) {
|
|
89
|
+
case 'minishogi':
|
|
90
|
+
return promotionZone(rules);
|
|
91
|
+
default:
|
|
92
|
+
return (color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(0));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export function secondBackrank(rules) {
|
|
96
|
+
switch (rules) {
|
|
97
|
+
case 'minishogi':
|
|
98
|
+
return (color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(5));
|
|
99
|
+
default:
|
|
100
|
+
return (color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(1));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function standardUnpromote(role) {
|
|
104
|
+
switch (role) {
|
|
105
|
+
case 'pawn':
|
|
106
|
+
case 'tokin':
|
|
107
|
+
return 'pawn';
|
|
108
|
+
case 'lance':
|
|
109
|
+
case 'promotedlance':
|
|
110
|
+
return 'lance';
|
|
111
|
+
case 'knight':
|
|
112
|
+
case 'promotedknight':
|
|
113
|
+
return 'knight';
|
|
114
|
+
case 'silver':
|
|
115
|
+
case 'promotedsilver':
|
|
116
|
+
return 'silver';
|
|
117
|
+
case 'gold':
|
|
118
|
+
return 'gold';
|
|
119
|
+
case 'bishop':
|
|
120
|
+
case 'horse':
|
|
121
|
+
return 'bishop';
|
|
122
|
+
case 'rook':
|
|
123
|
+
case 'dragon':
|
|
124
|
+
return 'rook';
|
|
125
|
+
default:
|
|
126
|
+
return role;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function standardPromote(role) {
|
|
130
|
+
switch (role) {
|
|
131
|
+
case 'pawn':
|
|
132
|
+
return 'tokin';
|
|
133
|
+
case 'lance':
|
|
134
|
+
return 'promotedlance';
|
|
135
|
+
case 'knight':
|
|
136
|
+
return 'promotedknight';
|
|
137
|
+
case 'silver':
|
|
138
|
+
return 'promotedsilver';
|
|
139
|
+
case 'bishop':
|
|
140
|
+
return 'horse';
|
|
141
|
+
case 'rook':
|
|
142
|
+
return 'dragon';
|
|
143
|
+
default:
|
|
144
|
+
return role;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=variantUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variantUtil.js","sourceRoot":"","sources":["src/variantUtil.ts"],"names":[],"mappings":"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"}
|
package/csa.js
DELETED
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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.makeCsaPocket = exports.makeCsaBoard = exports.makeCsaHeader = exports.CsaError = exports.InvalidCsa = void 0;
|
|
4
|
-
const result_1 = require("@badrap/result");
|
|
5
|
-
const board_1 = require("./board");
|
|
6
|
-
const setup_1 = require("./setup");
|
|
7
|
-
const types_1 = require("./types");
|
|
8
|
-
const util_1 = require("./util");
|
|
9
|
-
const csaUtil_1 = require("./csaUtil");
|
|
10
|
-
//
|
|
11
|
-
// CSA HEADER
|
|
12
|
-
//
|
|
13
|
-
var InvalidCsa;
|
|
14
|
-
(function (InvalidCsa) {
|
|
15
|
-
InvalidCsa["CSA"] = "ERR_CSA";
|
|
16
|
-
InvalidCsa["Board"] = "ERR_BOARD";
|
|
17
|
-
InvalidCsa["Handicap"] = "ERR_HANDICAP";
|
|
18
|
-
InvalidCsa["Pockets"] = "ERR_POCKETS";
|
|
19
|
-
InvalidCsa["AdditionalInfo"] = "ERR_ADDITIONAL";
|
|
20
|
-
})(InvalidCsa = exports.InvalidCsa || (exports.InvalidCsa = {}));
|
|
21
|
-
class CsaError extends Error {
|
|
22
|
-
}
|
|
23
|
-
exports.CsaError = CsaError;
|
|
24
|
-
// exporting handicaps differently is prob not worth it, so let's always go with the whole board
|
|
25
|
-
function makeCsaHeader(setup) {
|
|
26
|
-
return [
|
|
27
|
-
makeCsaBoard(setup.board),
|
|
28
|
-
makeCsaPocket(setup.pockets.sente, 'P+'),
|
|
29
|
-
makeCsaPocket(setup.pockets.gote, 'P-'),
|
|
30
|
-
setup.turn === 'gote' ? '-' : '+',
|
|
31
|
-
].join('\n');
|
|
32
|
-
}
|
|
33
|
-
exports.makeCsaHeader = makeCsaHeader;
|
|
34
|
-
function makeCsaBoard(board) {
|
|
35
|
-
let csaBoard = '';
|
|
36
|
-
for (let rank = 8; rank >= 0; rank--) {
|
|
37
|
-
csaBoard += 'P' + (9 - rank);
|
|
38
|
-
for (let file = 0; file < 9; file++) {
|
|
39
|
-
const square = file + rank * 9;
|
|
40
|
-
const piece = board.get(square);
|
|
41
|
-
if (!piece)
|
|
42
|
-
csaBoard += ' * ';
|
|
43
|
-
else {
|
|
44
|
-
const colorSign = piece.color === 'gote' ? '-' : '+';
|
|
45
|
-
csaBoard += colorSign + util_1.roleToCsa(piece.role);
|
|
46
|
-
}
|
|
47
|
-
if (file === 8 && rank > 0)
|
|
48
|
-
csaBoard += '\n';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return csaBoard;
|
|
52
|
-
}
|
|
53
|
-
exports.makeCsaBoard = makeCsaBoard;
|
|
54
|
-
function makeCsaPocket(material, prefix) {
|
|
55
|
-
if (material.isEmpty())
|
|
56
|
-
return '';
|
|
57
|
-
return (prefix +
|
|
58
|
-
types_1.POCKET_ROLES.map(role => {
|
|
59
|
-
const r = util_1.roleToCsa(role);
|
|
60
|
-
const n = material[role];
|
|
61
|
-
return ('00' + r).repeat(Math.min(n, 18));
|
|
62
|
-
})
|
|
63
|
-
.filter(p => p.length > 0)
|
|
64
|
-
.join(''));
|
|
65
|
-
}
|
|
66
|
-
exports.makeCsaPocket = makeCsaPocket;
|
|
67
|
-
// Import
|
|
68
|
-
function parseCsaHeader(csa) {
|
|
69
|
-
const lines = normalizedCsaLines(csa);
|
|
70
|
-
const handicap = lines.find(l => l.startsWith('PI'));
|
|
71
|
-
const isWholeBoard = lines.some(l => l.startsWith('P1'));
|
|
72
|
-
const baseBoard = util_1.defined(handicap) && !isWholeBoard ? parseCsaHandicap(handicap) : parseCsaBoard(lines.filter(l => /^P\d/.test(l)));
|
|
73
|
-
const turn = lines.some(l => l === '-') ? 'gote' : 'sente';
|
|
74
|
-
return baseBoard.chain(board => {
|
|
75
|
-
const setup = {
|
|
76
|
-
board: board,
|
|
77
|
-
pockets: setup_1.Material.empty(),
|
|
78
|
-
turn: turn,
|
|
79
|
-
fullmoves: 1,
|
|
80
|
-
};
|
|
81
|
-
return parseAdditions(setup, lines.filter(l => /P[\+|-]/.test(l)));
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
exports.parseCsaHeader = parseCsaHeader;
|
|
85
|
-
function parseCsaHandicap(handicap) {
|
|
86
|
-
const splitted = handicap.substring(2).match(/.{4}/g) || [];
|
|
87
|
-
const intitalBoard = board_1.Board.default();
|
|
88
|
-
for (const s of splitted) {
|
|
89
|
-
const sq = csaUtil_1.parseCsaSquare(s.substring(0, 2));
|
|
90
|
-
if (util_1.defined(sq)) {
|
|
91
|
-
intitalBoard.take(sq);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
return result_1.Result.err(new CsaError(InvalidCsa.Handicap));
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return result_1.Result.ok(intitalBoard);
|
|
98
|
-
}
|
|
99
|
-
exports.parseCsaHandicap = parseCsaHandicap;
|
|
100
|
-
function parseCsaBoard(csaBoard) {
|
|
101
|
-
if (csaBoard.length !== 9)
|
|
102
|
-
return result_1.Result.err(new CsaError(InvalidCsa.Board));
|
|
103
|
-
const board = board_1.Board.empty();
|
|
104
|
-
let file = 0;
|
|
105
|
-
let rank = 9;
|
|
106
|
-
for (const r of csaBoard.map(r => r.substring(2))) {
|
|
107
|
-
file = 0;
|
|
108
|
-
rank--;
|
|
109
|
-
for (const s of r.match(/.{1,3}/g) || []) {
|
|
110
|
-
if (s.includes('*'))
|
|
111
|
-
file++;
|
|
112
|
-
else {
|
|
113
|
-
if (file >= 9 || rank < 0)
|
|
114
|
-
return result_1.Result.err(new CsaError(InvalidCsa.Board));
|
|
115
|
-
const role = util_1.csaToRole(s.substring(1));
|
|
116
|
-
if (util_1.defined(role)) {
|
|
117
|
-
const square = file + rank * 9;
|
|
118
|
-
const piece = { role: role, color: (s.startsWith('-') ? 'gote' : 'sente') };
|
|
119
|
-
board.set(square, piece);
|
|
120
|
-
file++;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (rank !== 0 || file !== 9)
|
|
126
|
-
return result_1.Result.err(new CsaError(InvalidCsa.Board));
|
|
127
|
-
return result_1.Result.ok(board);
|
|
128
|
-
}
|
|
129
|
-
function parseAdditions(initialSetup, additions) {
|
|
130
|
-
for (const line of additions) {
|
|
131
|
-
const color = line[1] === '+' ? 'sente' : 'gote';
|
|
132
|
-
for (const sp of line.substring(2).match(/.{4}/g) || []) {
|
|
133
|
-
const sq = csaUtil_1.parseCsaSquare(sp.substring(0, 2));
|
|
134
|
-
const role = util_1.csaToRole(sp.substring(2, 4));
|
|
135
|
-
if (util_1.defined(sq) && util_1.defined(role)) {
|
|
136
|
-
if (sq === 0) {
|
|
137
|
-
if (!types_1.POCKET_ROLES.includes(role))
|
|
138
|
-
return result_1.Result.err(new CsaError(InvalidCsa.Pockets));
|
|
139
|
-
initialSetup.pockets[color][role]++;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
initialSetup.board.set(sq, { role: role, color: color });
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
else
|
|
146
|
-
return result_1.Result.err(new CsaError(InvalidCsa.AdditionalInfo));
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return result_1.Result.ok(initialSetup);
|
|
150
|
-
}
|
|
151
|
-
function parseTags(csa) {
|
|
152
|
-
return normalizedCsaLines(csa)
|
|
153
|
-
.filter(l => l.startsWith('$'))
|
|
154
|
-
.map(l => l.substring(1).split(/:(.*)/, 2));
|
|
155
|
-
}
|
|
156
|
-
exports.parseTags = parseTags;
|
|
157
|
-
//
|
|
158
|
-
// CSA MOVES
|
|
159
|
-
//
|
|
160
|
-
// Parsing CSA moves
|
|
161
|
-
function parseCsaMove(pos, csaMove) {
|
|
162
|
-
var _a;
|
|
163
|
-
// Normal move
|
|
164
|
-
const match = csaMove.match(/(?:[\+-])?([1-9][1-9])([1-9][1-9])(OU|HI|RY|KA|UM|KI|GI|NG|KE|NK|KY|NY|FU|TO)/);
|
|
165
|
-
if (!match) {
|
|
166
|
-
// Drop
|
|
167
|
-
const match = csaMove.match(/(?:[\+-])?00([1-9][1-9])(HI|KA|KI|GI|KE|KY|FU)/);
|
|
168
|
-
if (!match)
|
|
169
|
-
return;
|
|
170
|
-
const drop = {
|
|
171
|
-
role: util_1.csaToRole(match[2]),
|
|
172
|
-
to: csaUtil_1.parseCsaSquare(match[1]),
|
|
173
|
-
};
|
|
174
|
-
return drop;
|
|
175
|
-
}
|
|
176
|
-
const role = util_1.csaToRole(match[3]);
|
|
177
|
-
const orig = csaUtil_1.parseCsaSquare(match[1]);
|
|
178
|
-
return {
|
|
179
|
-
from: orig,
|
|
180
|
-
to: csaUtil_1.parseCsaSquare(match[2]),
|
|
181
|
-
promotion: ((_a = pos.board.get(orig)) === null || _a === void 0 ? void 0 : _a.role) !== role,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
exports.parseCsaMove = parseCsaMove;
|
|
185
|
-
function parseCsaMoves(pos, csaMoves) {
|
|
186
|
-
pos = pos.clone();
|
|
187
|
-
const moves = [];
|
|
188
|
-
for (const m of csaMoves) {
|
|
189
|
-
const move = parseCsaMove(pos, m);
|
|
190
|
-
if (!move)
|
|
191
|
-
return moves;
|
|
192
|
-
pos.play(move);
|
|
193
|
-
moves.push(move);
|
|
194
|
-
}
|
|
195
|
-
return moves;
|
|
196
|
-
}
|
|
197
|
-
exports.parseCsaMoves = parseCsaMoves;
|
|
198
|
-
// Making CSA formatted moves
|
|
199
|
-
function makeCsaMove(pos, move) {
|
|
200
|
-
if (types_1.isDrop(move)) {
|
|
201
|
-
return '00' + csaUtil_1.makeCsaSquare(move.to) + util_1.roleToCsa(move.role);
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
const role = pos.board.getRole(move.from);
|
|
205
|
-
if (!role)
|
|
206
|
-
return '%ERROR';
|
|
207
|
-
return csaUtil_1.makeCsaSquare(move.from) + csaUtil_1.makeCsaSquare(move.to) + util_1.roleToCsa(move.promotion ? util_1.promote(role) : role);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
exports.makeCsaMove = makeCsaMove;
|
|
211
|
-
function makeCsaVariation(pos, variation) {
|
|
212
|
-
pos = pos.clone();
|
|
213
|
-
const line = [];
|
|
214
|
-
for (const m of variation) {
|
|
215
|
-
line.push((pos.turn === 'sente' ? '+' : '-') + makeCsaMove(pos, m));
|
|
216
|
-
pos.play(m);
|
|
217
|
-
}
|
|
218
|
-
return line.join('\n');
|
|
219
|
-
}
|
|
220
|
-
exports.makeCsaVariation = makeCsaVariation;
|
|
221
|
-
function normalizedCsaLines(csa) {
|
|
222
|
-
return csa
|
|
223
|
-
.replace(/,/g, '\n')
|
|
224
|
-
.split(/[\r\n]+/)
|
|
225
|
-
.map(l => l.trim())
|
|
226
|
-
.filter(l => l);
|
|
227
|
-
}
|
|
228
|
-
exports.normalizedCsaLines = normalizedCsaLines;
|
|
229
|
-
//# sourceMappingURL=csa.js.map
|
package/csa.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"csa.js","sourceRoot":"","sources":["src/csa.ts"],"names":[],"mappings":"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"}
|
package/csaUtil.d.ts
DELETED
package/csaUtil.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeCsaSquare = exports.parseCsaSquare = void 0;
|
|
4
|
-
const util_1 = require("./util");
|
|
5
|
-
function parseCsaSquare(str) {
|
|
6
|
-
if (str.length !== 2)
|
|
7
|
-
return;
|
|
8
|
-
if (str === '00')
|
|
9
|
-
return 0; // for pocket
|
|
10
|
-
const file = Math.abs(str.charCodeAt(0) - '9'.charCodeAt(0));
|
|
11
|
-
const rank = Math.abs(str.charCodeAt(1) - '9'.charCodeAt(0));
|
|
12
|
-
if (file < 0 || file >= 9 || rank < 0 || rank >= 9)
|
|
13
|
-
return;
|
|
14
|
-
return file + 9 * rank;
|
|
15
|
-
}
|
|
16
|
-
exports.parseCsaSquare = parseCsaSquare;
|
|
17
|
-
function makeCsaSquare(sq) {
|
|
18
|
-
return (9 - util_1.squareFile(sq)).toString() + (9 - util_1.squareRank(sq));
|
|
19
|
-
}
|
|
20
|
-
exports.makeCsaSquare = makeCsaSquare;
|
|
21
|
-
//# sourceMappingURL=csaUtil.js.map
|
package/csaUtil.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,aAAa;IACzC,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/fen.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Result } from '@badrap/result';
|
|
2
|
-
import { Piece } from './types';
|
|
3
|
-
import { Board } from './board';
|
|
4
|
-
import { Setup, MaterialSide, Material } from './setup';
|
|
5
|
-
export declare const INITIAL_BOARD_FEN = "lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL";
|
|
6
|
-
export declare const INITIAL_EPD: string;
|
|
7
|
-
export declare const INITIAL_FEN: string;
|
|
8
|
-
export declare const EMPTY_BOARD_FEN = "9/9/9/9/9/9/9/9/9";
|
|
9
|
-
export declare const EMPTY_EPD: string;
|
|
10
|
-
export declare const EMPTY_FEN: string;
|
|
11
|
-
export declare enum InvalidFen {
|
|
12
|
-
Fen = "ERR_FEN",
|
|
13
|
-
Board = "ERR_BOARD",
|
|
14
|
-
Pockets = "ERR_POCKETS",
|
|
15
|
-
Turn = "ERR_TURN",
|
|
16
|
-
Fullmoves = "ERR_FULLMOVES"
|
|
17
|
-
}
|
|
18
|
-
export declare class FenError extends Error {
|
|
19
|
-
}
|
|
20
|
-
export declare function parseBoardFen(boardPart: string): Result<Board, FenError>;
|
|
21
|
-
export declare function parsePockets(pocketPart: string): Result<Material, FenError>;
|
|
22
|
-
export declare function parseFen(fen: string): Result<Setup, FenError>;
|
|
23
|
-
interface FenOpts {
|
|
24
|
-
epd?: boolean;
|
|
25
|
-
}
|
|
26
|
-
export declare function parsePiece(str: string): Piece | undefined;
|
|
27
|
-
export declare function makePiece(piece: Piece): string;
|
|
28
|
-
export declare function makeBoardFen(board: Board): string;
|
|
29
|
-
export declare function makePocket(material: MaterialSide): string;
|
|
30
|
-
export declare function makePockets(pocket: Material): string;
|
|
31
|
-
export declare function makeFen(setup: Setup, opts?: FenOpts): string;
|
|
32
|
-
export {};
|