shogiops 0.2.9 → 0.6.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/README.md +6 -7
- 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 +17 -173
- package/compat.js.map +1 -1
- package/debug.js +30 -56
- package/debug.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 +13 -10
- package/index.js +14 -15
- package/index.js.map +1 -1
- package/{csa.d.ts → notation/csa/csa.d.ts} +9 -9
- package/{csa.js → notation/csa/csa.js} +52 -56
- package/notation/csa/csa.js.map +1 -0
- package/notation/japanese.d.ts +3 -0
- package/notation/japanese.js +65 -0
- package/notation/japanese.js.map +1 -0
- package/{kif.d.ts → notation/kif/kif.d.ts} +10 -9
- package/{kif.js → notation/kif/kif.js} +86 -84
- 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} +5 -0
- package/notation/kif/kifHandicaps.js.map +1 -0
- package/notation/kitaoKawasaki.d.ts +3 -0
- package/notation/kitaoKawasaki.js +30 -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} +43 -32
- package/notation/notationUtil.js.map +1 -0
- package/notation/western.d.ts +3 -0
- package/notation/western.js +27 -0
- package/notation/western.js.map +1 -0
- package/notation/westernEngine.d.ts +3 -0
- package/notation/westernEngine.js +27 -0
- package/notation/westernEngine.js.map +1 -0
- package/package.json +51 -36
- package/setup.d.ts +2 -32
- package/setup.js +3 -74
- package/setup.js.map +1 -1
- package/sfen.d.ts +33 -0
- package/sfen.js +201 -0
- package/sfen.js.map +1 -0
- 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/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} +50 -51
- 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 +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 +4 -7
- package/util.js +9 -60
- 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/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.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/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/hand.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Role } from './types';
|
|
2
|
+
export declare class Hand {
|
|
3
|
+
pawn: number;
|
|
4
|
+
lance: number;
|
|
5
|
+
knight: number;
|
|
6
|
+
silver: number;
|
|
7
|
+
gold: number;
|
|
8
|
+
bishop: number;
|
|
9
|
+
rook: number;
|
|
10
|
+
tokin: number;
|
|
11
|
+
promotedlance: number;
|
|
12
|
+
promotedknight: number;
|
|
13
|
+
promotedsilver: number;
|
|
14
|
+
horse: number;
|
|
15
|
+
dragon: number;
|
|
16
|
+
king: number;
|
|
17
|
+
private constructor();
|
|
18
|
+
static empty(): Hand;
|
|
19
|
+
clone(): Hand;
|
|
20
|
+
equals(other: Hand): boolean;
|
|
21
|
+
add(other: Hand): Hand;
|
|
22
|
+
nonEmpty(): boolean;
|
|
23
|
+
isEmpty(): boolean;
|
|
24
|
+
count(): number;
|
|
25
|
+
[Symbol.iterator](): Iterator<[Role, number]>;
|
|
26
|
+
}
|
|
27
|
+
export declare class Hands {
|
|
28
|
+
gote: Hand;
|
|
29
|
+
sente: Hand;
|
|
30
|
+
constructor(gote: Hand, sente: Hand);
|
|
31
|
+
static empty(): Hands;
|
|
32
|
+
clone(): Hands;
|
|
33
|
+
equals(other: Hands): boolean;
|
|
34
|
+
add(other: Hands): Hands;
|
|
35
|
+
count(): number;
|
|
36
|
+
isEmpty(): boolean;
|
|
37
|
+
nonEmpty(): boolean;
|
|
38
|
+
}
|
package/hand.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hands = exports.Hand = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
// Hand alone can store anything
|
|
6
|
+
// let the variants decide what to store and what not
|
|
7
|
+
class Hand {
|
|
8
|
+
constructor() { }
|
|
9
|
+
static empty() {
|
|
10
|
+
const m = new Hand();
|
|
11
|
+
for (const role of types_1.ROLES)
|
|
12
|
+
m[role] = 0;
|
|
13
|
+
return m;
|
|
14
|
+
}
|
|
15
|
+
clone() {
|
|
16
|
+
const m = new Hand();
|
|
17
|
+
for (const role of types_1.ROLES)
|
|
18
|
+
m[role] = this[role];
|
|
19
|
+
return m;
|
|
20
|
+
}
|
|
21
|
+
equals(other) {
|
|
22
|
+
return types_1.ROLES.every(role => this[role] === other[role]);
|
|
23
|
+
}
|
|
24
|
+
add(other) {
|
|
25
|
+
const m = new Hand();
|
|
26
|
+
for (const role of types_1.ROLES)
|
|
27
|
+
m[role] = this[role] + other[role];
|
|
28
|
+
return m;
|
|
29
|
+
}
|
|
30
|
+
nonEmpty() {
|
|
31
|
+
return types_1.ROLES.some(role => this[role] > 0);
|
|
32
|
+
}
|
|
33
|
+
isEmpty() {
|
|
34
|
+
return !this.nonEmpty();
|
|
35
|
+
}
|
|
36
|
+
count() {
|
|
37
|
+
return types_1.ROLES.map(role => this[role]).reduce((acc, cur) => acc + cur);
|
|
38
|
+
}
|
|
39
|
+
*[Symbol.iterator]() {
|
|
40
|
+
for (const role of types_1.ROLES.filter(r => this[r] > 0)) {
|
|
41
|
+
yield [role, this[role]];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.Hand = Hand;
|
|
46
|
+
class Hands {
|
|
47
|
+
constructor(gote, sente) {
|
|
48
|
+
this.gote = gote;
|
|
49
|
+
this.sente = sente;
|
|
50
|
+
}
|
|
51
|
+
static empty() {
|
|
52
|
+
return new Hands(Hand.empty(), Hand.empty());
|
|
53
|
+
}
|
|
54
|
+
clone() {
|
|
55
|
+
return new Hands(this.gote.clone(), this.sente.clone());
|
|
56
|
+
}
|
|
57
|
+
equals(other) {
|
|
58
|
+
return this.gote.equals(other.gote) && this.sente.equals(other.sente);
|
|
59
|
+
}
|
|
60
|
+
add(other) {
|
|
61
|
+
return new Hands(this.gote.add(other.gote), this.sente.add(other.sente));
|
|
62
|
+
}
|
|
63
|
+
count() {
|
|
64
|
+
return this.gote.count() + this.sente.count();
|
|
65
|
+
}
|
|
66
|
+
isEmpty() {
|
|
67
|
+
return this.gote.isEmpty() && this.sente.isEmpty();
|
|
68
|
+
}
|
|
69
|
+
nonEmpty() {
|
|
70
|
+
return !this.isEmpty();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Hands = Hands;
|
|
74
|
+
//# sourceMappingURL=hand.js.map
|
package/hand.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hand.js","sourceRoot":"","sources":["src/hand.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAEtC,gCAAgC;AAChC,qDAAqD;AACrD,MAAa,IAAI;IAgBf,gBAAuB,CAAC;IAExB,MAAM,CAAC,KAAK;QACV,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,aAAK;YAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,aAAK;YAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,KAAW;QAChB,OAAO,aAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAC,KAAW;QACb,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,aAAK;YAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,QAAQ;QACN,OAAO,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK;QACH,OAAO,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YACjD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1B;IACH,CAAC;CACF;AAzDD,oBAyDC;AAED,MAAa,KAAK;IAChB,YAAmB,IAAU,EAAS,KAAW;QAA9B,SAAI,GAAJ,IAAI,CAAM;QAAS,UAAK,GAAL,KAAK,CAAM;IAAG,CAAC;IAErD,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,GAAG,CAAC,KAAY;QACd,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACF;AA9BD,sBA8BC"}
|
package/hash.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Board } from './board';
|
|
2
|
-
import { Setup
|
|
2
|
+
import { Setup } from './setup';
|
|
3
|
+
import { Hand, Hands } from './hand';
|
|
3
4
|
export declare function fxhash32(word: number, state?: number): number;
|
|
4
5
|
export declare function hashBoard(board: Board, state?: number): number;
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function hashHand(hand: Hand, state?: number): number;
|
|
7
|
+
export declare function hashHands(hands: Hands, state?: number): number;
|
|
7
8
|
export declare function hashSetup(setup: Setup, state?: number): number;
|
package/hash.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hashSetup = exports.
|
|
3
|
+
exports.hashSetup = exports.hashHands = exports.hashHand = exports.hashBoard = exports.fxhash32 = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
function rol32(n, left) {
|
|
6
6
|
return (n << left) | (n >>> (32 - left));
|
|
@@ -16,21 +16,21 @@ function hashBoard(board, state = 0) {
|
|
|
16
16
|
return state;
|
|
17
17
|
}
|
|
18
18
|
exports.hashBoard = hashBoard;
|
|
19
|
-
function
|
|
20
|
-
for (const role of types_1.
|
|
21
|
-
state = fxhash32(
|
|
19
|
+
function hashHand(hand, state = 0) {
|
|
20
|
+
for (const role of types_1.ROLES)
|
|
21
|
+
state = fxhash32(hand[role], state);
|
|
22
22
|
return state;
|
|
23
23
|
}
|
|
24
|
-
exports.
|
|
25
|
-
function
|
|
24
|
+
exports.hashHand = hashHand;
|
|
25
|
+
function hashHands(hands, state = 0) {
|
|
26
26
|
for (const color of types_1.COLORS)
|
|
27
|
-
state =
|
|
27
|
+
state = hashHand(hands[color], state);
|
|
28
28
|
return state;
|
|
29
29
|
}
|
|
30
|
-
exports.
|
|
30
|
+
exports.hashHands = hashHands;
|
|
31
31
|
function hashSetup(setup, state = 0) {
|
|
32
32
|
state = hashBoard(setup.board, state);
|
|
33
|
-
state =
|
|
33
|
+
state = hashHands(setup.hands, state);
|
|
34
34
|
if (setup.turn === 'sente')
|
|
35
35
|
state = fxhash32(1, state);
|
|
36
36
|
return state;
|
package/hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["src/hash.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["src/hash.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAKxC,SAAS,KAAK,CAAC,CAAS,EAAE,IAAY;IACpC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC;AAFD,4BAEC;AAED,SAAgB,SAAS,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IAC/C,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1F,KAAK,MAAM,IAAI,IAAI,aAAK;QACtB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC;AACf,CAAC;AALD,8BAKC;AAED,SAAgB,QAAQ,CAAC,IAAU,EAAE,KAAK,GAAG,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,aAAK;QAAE,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,4BAGC;AAED,SAAgB,SAAS,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,cAAM;QAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,8BAGC;AAED,SAAgB,SAAS,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IAC/C,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,8BAKC"}
|
package/index.d.ts
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
export { FILE_NAMES, RANK_NAMES, FileName, RankName, Square, SquareName, BySquare, Color, COLORS, ByColor, Role, ROLES,
|
|
2
|
-
export {
|
|
1
|
+
export { FILE_NAMES, RANK_NAMES, FileName, RankName, Square, SquareName, BySquare, Color, COLORS, ByColor, Role, ROLES, ByRole, Piece, NormalMove, DropMove, Move, isDrop, isNormal, Rules, RULES, Outcome, } from './types';
|
|
2
|
+
export { stringToRole, defined, makeSquare, makeUsi, opposite, parseSquare, parseUsi, roleToString, squareFile, squareRank, } from './util';
|
|
3
3
|
export { SquareSet } from './squareSet';
|
|
4
4
|
export { attacks, between, bishopAttacks, kingAttacks, knightAttacks, pawnAttacks, lanceAttacks, silverAttacks, goldAttacks, horseAttacks, dragonAttacks, ray, rookAttacks, } from './attacks';
|
|
5
5
|
export { Board } from './board';
|
|
6
|
-
export {
|
|
6
|
+
export { Setup, defaultSetup } from './setup';
|
|
7
7
|
export { IllegalSetup, Shogi, Position, PositionError, Context } from './shogi';
|
|
8
8
|
export * as compat from './compat';
|
|
9
9
|
export * as debug from './debug';
|
|
10
|
-
export * as
|
|
11
|
-
export * as handicaps from './kifHandicaps';
|
|
10
|
+
export * as sfen from './sfen';
|
|
11
|
+
export * as handicaps from './notation/kif/kifHandicaps';
|
|
12
|
+
export * as hand from './hand';
|
|
12
13
|
export * as hash from './hash';
|
|
13
|
-
export * as
|
|
14
|
-
export * as
|
|
15
|
-
export * as
|
|
16
|
-
export * as
|
|
17
|
-
export * as
|
|
14
|
+
export * as japanese from './notation/japanese';
|
|
15
|
+
export * as kitaoKawasaki from './notation/kitaoKawasaki';
|
|
16
|
+
export * as western from './notation/western';
|
|
17
|
+
export * as westernEngine from './notation/westernEngine';
|
|
18
|
+
export * as kif from './notation/kif/kif';
|
|
19
|
+
export * as csa from './notation/csa/csa';
|
|
18
20
|
export * as transform from './transform';
|
|
19
21
|
export * as variant from './variant';
|
|
22
|
+
export * as variantUtil from './variantUtil';
|
package/index.js
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
3
|
+
exports.transform = exports.csa = exports.kif = exports.westernEngine = exports.western = exports.kitaoKawasaki = exports.japanese = exports.hash = exports.hand = exports.handicaps = exports.sfen = exports.debug = exports.compat = exports.PositionError = exports.Position = exports.Shogi = exports.IllegalSetup = exports.defaultSetup = exports.Board = exports.rookAttacks = exports.ray = exports.dragonAttacks = exports.horseAttacks = exports.goldAttacks = exports.silverAttacks = exports.lanceAttacks = exports.pawnAttacks = exports.knightAttacks = exports.kingAttacks = exports.bishopAttacks = exports.between = exports.attacks = exports.SquareSet = exports.squareRank = exports.squareFile = exports.roleToString = exports.parseUsi = exports.parseSquare = exports.opposite = exports.makeUsi = exports.makeSquare = exports.defined = exports.stringToRole = exports.RULES = exports.isNormal = exports.isDrop = exports.ROLES = exports.COLORS = exports.RANK_NAMES = exports.FILE_NAMES = void 0;
|
|
4
|
+
exports.variantUtil = exports.variant = void 0;
|
|
5
5
|
var types_1 = require("./types");
|
|
6
6
|
Object.defineProperty(exports, "FILE_NAMES", { enumerable: true, get: function () { return types_1.FILE_NAMES; } });
|
|
7
7
|
Object.defineProperty(exports, "RANK_NAMES", { enumerable: true, get: function () { return types_1.RANK_NAMES; } });
|
|
8
8
|
Object.defineProperty(exports, "COLORS", { enumerable: true, get: function () { return types_1.COLORS; } });
|
|
9
9
|
Object.defineProperty(exports, "ROLES", { enumerable: true, get: function () { return types_1.ROLES; } });
|
|
10
|
-
Object.defineProperty(exports, "POCKET_ROLES", { enumerable: true, get: function () { return types_1.POCKET_ROLES; } });
|
|
11
|
-
Object.defineProperty(exports, "PROMOTABLE_ROLES", { enumerable: true, get: function () { return types_1.PROMOTABLE_ROLES; } });
|
|
12
10
|
Object.defineProperty(exports, "isDrop", { enumerable: true, get: function () { return types_1.isDrop; } });
|
|
13
11
|
Object.defineProperty(exports, "isNormal", { enumerable: true, get: function () { return types_1.isNormal; } });
|
|
14
12
|
Object.defineProperty(exports, "RULES", { enumerable: true, get: function () { return types_1.RULES; } });
|
|
15
13
|
var util_1 = require("./util");
|
|
16
|
-
Object.defineProperty(exports, "
|
|
14
|
+
Object.defineProperty(exports, "stringToRole", { enumerable: true, get: function () { return util_1.stringToRole; } });
|
|
17
15
|
Object.defineProperty(exports, "defined", { enumerable: true, get: function () { return util_1.defined; } });
|
|
18
16
|
Object.defineProperty(exports, "makeSquare", { enumerable: true, get: function () { return util_1.makeSquare; } });
|
|
19
17
|
Object.defineProperty(exports, "makeUsi", { enumerable: true, get: function () { return util_1.makeUsi; } });
|
|
20
18
|
Object.defineProperty(exports, "opposite", { enumerable: true, get: function () { return util_1.opposite; } });
|
|
21
19
|
Object.defineProperty(exports, "parseSquare", { enumerable: true, get: function () { return util_1.parseSquare; } });
|
|
22
20
|
Object.defineProperty(exports, "parseUsi", { enumerable: true, get: function () { return util_1.parseUsi; } });
|
|
23
|
-
Object.defineProperty(exports, "
|
|
21
|
+
Object.defineProperty(exports, "roleToString", { enumerable: true, get: function () { return util_1.roleToString; } });
|
|
24
22
|
Object.defineProperty(exports, "squareFile", { enumerable: true, get: function () { return util_1.squareFile; } });
|
|
25
23
|
Object.defineProperty(exports, "squareRank", { enumerable: true, get: function () { return util_1.squareRank; } });
|
|
26
24
|
var squareSet_1 = require("./squareSet");
|
|
@@ -42,8 +40,6 @@ Object.defineProperty(exports, "rookAttacks", { enumerable: true, get: function
|
|
|
42
40
|
var board_1 = require("./board");
|
|
43
41
|
Object.defineProperty(exports, "Board", { enumerable: true, get: function () { return board_1.Board; } });
|
|
44
42
|
var setup_1 = require("./setup");
|
|
45
|
-
Object.defineProperty(exports, "Material", { enumerable: true, get: function () { return setup_1.Material; } });
|
|
46
|
-
Object.defineProperty(exports, "MaterialSide", { enumerable: true, get: function () { return setup_1.MaterialSide; } });
|
|
47
43
|
Object.defineProperty(exports, "defaultSetup", { enumerable: true, get: function () { return setup_1.defaultSetup; } });
|
|
48
44
|
var shogi_1 = require("./shogi");
|
|
49
45
|
Object.defineProperty(exports, "IllegalSetup", { enumerable: true, get: function () { return shogi_1.IllegalSetup; } });
|
|
@@ -52,14 +48,17 @@ Object.defineProperty(exports, "Position", { enumerable: true, get: function ()
|
|
|
52
48
|
Object.defineProperty(exports, "PositionError", { enumerable: true, get: function () { return shogi_1.PositionError; } });
|
|
53
49
|
exports.compat = require("./compat");
|
|
54
50
|
exports.debug = require("./debug");
|
|
55
|
-
exports.
|
|
56
|
-
exports.handicaps = require("./kifHandicaps");
|
|
51
|
+
exports.sfen = require("./sfen");
|
|
52
|
+
exports.handicaps = require("./notation/kif/kifHandicaps");
|
|
53
|
+
exports.hand = require("./hand");
|
|
57
54
|
exports.hash = require("./hash");
|
|
58
|
-
exports.
|
|
59
|
-
exports.
|
|
60
|
-
exports.
|
|
61
|
-
exports.
|
|
62
|
-
exports.
|
|
55
|
+
exports.japanese = require("./notation/japanese");
|
|
56
|
+
exports.kitaoKawasaki = require("./notation/kitaoKawasaki");
|
|
57
|
+
exports.western = require("./notation/western");
|
|
58
|
+
exports.westernEngine = require("./notation/westernEngine");
|
|
59
|
+
exports.kif = require("./notation/kif/kif");
|
|
60
|
+
exports.csa = require("./notation/csa/csa");
|
|
63
61
|
exports.transform = require("./transform");
|
|
64
62
|
exports.variant = require("./variant");
|
|
63
|
+
exports.variantUtil = require("./variantUtil");
|
|
65
64
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;;AAAA,iCAuBiB;AAtBf,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AAOV,+FAAA,MAAM,OAAA;AAGN,8FAAA,KAAK,OAAA;AAML,+FAAA,MAAM,OAAA;AACN,iGAAA,QAAQ,OAAA;AAER,8FAAA,KAAK,OAAA;AAIP,+BAWgB;AAVd,oGAAA,YAAY,OAAA;AACZ,+FAAA,OAAO,OAAA;AACP,kGAAA,UAAU,OAAA;AACV,+FAAA,OAAO,OAAA;AACP,gGAAA,QAAQ,OAAA;AACR,mGAAA,WAAW,OAAA;AACX,gGAAA,QAAQ,OAAA;AACR,oGAAA,YAAY,OAAA;AACZ,kGAAA,UAAU,OAAA;AACV,kGAAA,UAAU,OAAA;AAGZ,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,qCAcmB;AAbjB,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AACb,8FAAA,GAAG,OAAA;AACH,sGAAA,WAAW,OAAA;AAGb,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAEd,iCAA8C;AAA9B,qGAAA,YAAY,OAAA;AAE5B,iCAAgF;AAAvE,qGAAA,YAAY,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AAErD,qCAAmC;AAEnC,mCAAiC;AAEjC,iCAA+B;AAE/B,2DAAyD;AAEzD,iCAA+B;AAE/B,iCAA+B;AAE/B,kDAAgD;AAEhD,4DAA0D;AAE1D,gDAA8C;AAE9C,4DAA0D;AAE1D,4CAA0C;AAE1C,4CAA0C;AAE1C,2CAAyC;AAEzC,uCAAqC;AAErC,+CAA6C"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { Result } from '@badrap/result';
|
|
2
|
-
import { Board } from '
|
|
3
|
-
import {
|
|
4
|
-
import { Position } from '
|
|
5
|
-
import { Move } from '
|
|
2
|
+
import { Board } from '../../board';
|
|
3
|
+
import { Setup } from '../../setup';
|
|
4
|
+
import { Position } from '../../shogi';
|
|
5
|
+
import { Move } from '../../types';
|
|
6
|
+
import { Hand } from '../../hand';
|
|
6
7
|
export declare enum InvalidCsa {
|
|
7
8
|
CSA = "ERR_CSA",
|
|
8
9
|
Board = "ERR_BOARD",
|
|
9
10
|
Handicap = "ERR_HANDICAP",
|
|
10
|
-
|
|
11
|
+
Hands = "ERR_HANDS",
|
|
11
12
|
AdditionalInfo = "ERR_ADDITIONAL"
|
|
12
13
|
}
|
|
13
14
|
export declare class CsaError extends Error {
|
|
14
15
|
}
|
|
15
16
|
export declare function makeCsaHeader(setup: Setup): string;
|
|
16
17
|
export declare function makeCsaBoard(board: Board): string;
|
|
17
|
-
export declare function
|
|
18
|
+
export declare function makeCsaHand(hand: Hand, prefix: string): string;
|
|
18
19
|
export declare function parseCsaHeader(csa: string): Result<Setup, CsaError>;
|
|
19
20
|
export declare function parseCsaHandicap(handicap: string): Result<Board, CsaError>;
|
|
20
21
|
export declare function parseTags(csa: string): [string, string][];
|
|
22
|
+
export declare function normalizedCsaLines(csa: string): string[];
|
|
21
23
|
export declare function parseCsaMove(pos: Position, csaMove: string): Move | undefined;
|
|
22
24
|
export declare function parseCsaMoves(pos: Position, csaMoves: string[]): Move[];
|
|
23
|
-
export declare function makeCsaMove(pos: Position, move: Move): string;
|
|
24
|
-
export declare function makeCsaVariation(pos: Position, variation: Move[]): string;
|
|
25
|
-
export declare function normalizedCsaLines(csa: string): string[];
|
|
25
|
+
export declare function makeCsaMove(pos: Position, move: Move): string | undefined;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.makeCsaMove = exports.parseCsaMoves = exports.parseCsaMove = exports.normalizedCsaLines = 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
|
-
const board_1 = require("
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
5
|
+
const board_1 = require("../../board");
|
|
6
|
+
const types_1 = require("../../types");
|
|
7
|
+
const util_1 = require("../../util");
|
|
8
|
+
const hand_1 = require("../../hand");
|
|
9
|
+
const variantUtil_1 = require("../../variantUtil");
|
|
10
|
+
const notationUtil_1 = require("../notationUtil");
|
|
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,8 +27,8 @@ 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
|
]
|
|
32
34
|
.filter(p => p.length > 0)
|
|
@@ -44,7 +46,7 @@ function makeCsaBoard(board) {
|
|
|
44
46
|
csaBoard += ' * ';
|
|
45
47
|
else {
|
|
46
48
|
const colorSign = piece.color === 'gote' ? '-' : '+';
|
|
47
|
-
csaBoard += colorSign + util_1.roleToCsa(piece.role);
|
|
49
|
+
csaBoard += colorSign + (0, util_1.roleToCsa)(piece.role);
|
|
48
50
|
}
|
|
49
51
|
if (file === 8 && rank > 0)
|
|
50
52
|
csaBoard += '\n';
|
|
@@ -53,30 +55,31 @@ function makeCsaBoard(board) {
|
|
|
53
55
|
return csaBoard;
|
|
54
56
|
}
|
|
55
57
|
exports.makeCsaBoard = makeCsaBoard;
|
|
56
|
-
function
|
|
57
|
-
if (
|
|
58
|
+
function makeCsaHand(hand, prefix) {
|
|
59
|
+
if (hand.isEmpty())
|
|
58
60
|
return '';
|
|
59
61
|
return (prefix +
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const
|
|
62
|
+
(0, variantUtil_1.handRoles)('shogi')
|
|
63
|
+
.map(role => {
|
|
64
|
+
const r = (0, util_1.roleToCsa)(role);
|
|
65
|
+
const n = hand[role];
|
|
63
66
|
return ('00' + r).repeat(Math.min(n, 18));
|
|
64
67
|
})
|
|
65
68
|
.filter(p => p.length > 0)
|
|
66
69
|
.join(''));
|
|
67
70
|
}
|
|
68
|
-
exports.
|
|
71
|
+
exports.makeCsaHand = makeCsaHand;
|
|
69
72
|
// Import
|
|
70
73
|
function parseCsaHeader(csa) {
|
|
71
74
|
const lines = normalizedCsaLines(csa);
|
|
72
75
|
const handicap = lines.find(l => l.startsWith('PI'));
|
|
73
76
|
const isWholeBoard = lines.some(l => l.startsWith('P1'));
|
|
74
|
-
const baseBoard = util_1.defined(handicap) && !isWholeBoard ? parseCsaHandicap(handicap) : parseCsaBoard(lines.filter(l => /^P\d/.test(l)));
|
|
77
|
+
const baseBoard = (0, util_1.defined)(handicap) && !isWholeBoard ? parseCsaHandicap(handicap) : parseCsaBoard(lines.filter(l => /^P\d/.test(l)));
|
|
75
78
|
const turn = lines.some(l => l === '-') ? 'gote' : 'sente';
|
|
76
79
|
return baseBoard.chain(board => {
|
|
77
80
|
const setup = {
|
|
78
81
|
board: board,
|
|
79
|
-
|
|
82
|
+
hands: hand_1.Hands.empty(),
|
|
80
83
|
turn: turn,
|
|
81
84
|
fullmoves: 1,
|
|
82
85
|
};
|
|
@@ -88,8 +91,8 @@ function parseCsaHandicap(handicap) {
|
|
|
88
91
|
const splitted = handicap.substring(2).match(/.{4}/g) || [];
|
|
89
92
|
const intitalBoard = board_1.Board.default();
|
|
90
93
|
for (const s of splitted) {
|
|
91
|
-
const sq =
|
|
92
|
-
if (util_1.defined(sq)) {
|
|
94
|
+
const sq = (0, notationUtil_1.parseNumberSquare)(s.substring(0, 2));
|
|
95
|
+
if ((0, util_1.defined)(sq)) {
|
|
93
96
|
intitalBoard.take(sq);
|
|
94
97
|
}
|
|
95
98
|
else {
|
|
@@ -114,8 +117,8 @@ function parseCsaBoard(csaBoard) {
|
|
|
114
117
|
else {
|
|
115
118
|
if (file >= 9 || rank < 0)
|
|
116
119
|
return result_1.Result.err(new CsaError(InvalidCsa.Board));
|
|
117
|
-
const role = util_1.csaToRole(s.substring(1));
|
|
118
|
-
if (util_1.defined(role)) {
|
|
120
|
+
const role = (0, util_1.csaToRole)(s.substring(1));
|
|
121
|
+
if ((0, util_1.defined)(role) && (0, variantUtil_1.allRoles)('shogi').includes(role)) {
|
|
119
122
|
const square = file + rank * 9;
|
|
120
123
|
const piece = { role: role, color: (s.startsWith('-') ? 'gote' : 'sente') };
|
|
121
124
|
board.set(square, piece);
|
|
@@ -132,13 +135,14 @@ function parseAdditions(initialSetup, additions) {
|
|
|
132
135
|
for (const line of additions) {
|
|
133
136
|
const color = line[1] === '+' ? 'sente' : 'gote';
|
|
134
137
|
for (const sp of line.substring(2).match(/.{4}/g) || []) {
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
const sqString = sp.substring(0, 2);
|
|
139
|
+
const sq = (0, notationUtil_1.parseNumberSquare)(sqString);
|
|
140
|
+
const role = (0, util_1.csaToRole)(sp.substring(2, 4));
|
|
141
|
+
if (((0, util_1.defined)(sq) || sqString === '00') && (0, util_1.defined)(role)) {
|
|
142
|
+
if (!(0, util_1.defined)(sq)) {
|
|
143
|
+
if (!(0, variantUtil_1.handRoles)('shogi').includes(role))
|
|
144
|
+
return result_1.Result.err(new CsaError(InvalidCsa.Hands));
|
|
145
|
+
initialSetup.hands[color][role]++;
|
|
142
146
|
}
|
|
143
147
|
else {
|
|
144
148
|
initialSetup.board.set(sq, { role: role, color: color });
|
|
@@ -156,6 +160,14 @@ function parseTags(csa) {
|
|
|
156
160
|
.map(l => l.substring(1).split(/:(.*)/, 2));
|
|
157
161
|
}
|
|
158
162
|
exports.parseTags = parseTags;
|
|
163
|
+
function normalizedCsaLines(csa) {
|
|
164
|
+
return csa
|
|
165
|
+
.replace(/,/g, '\n')
|
|
166
|
+
.split(/[\r\n]+/)
|
|
167
|
+
.map(l => l.trim())
|
|
168
|
+
.filter(l => l);
|
|
169
|
+
}
|
|
170
|
+
exports.normalizedCsaLines = normalizedCsaLines;
|
|
159
171
|
//
|
|
160
172
|
// CSA MOVES
|
|
161
173
|
//
|
|
@@ -170,16 +182,16 @@ function parseCsaMove(pos, csaMove) {
|
|
|
170
182
|
if (!match)
|
|
171
183
|
return;
|
|
172
184
|
const drop = {
|
|
173
|
-
role: util_1.csaToRole(match[2]),
|
|
174
|
-
to:
|
|
185
|
+
role: (0, util_1.csaToRole)(match[2]),
|
|
186
|
+
to: (0, notationUtil_1.parseNumberSquare)(match[1]),
|
|
175
187
|
};
|
|
176
188
|
return drop;
|
|
177
189
|
}
|
|
178
|
-
const role = util_1.csaToRole(match[3]);
|
|
179
|
-
const orig =
|
|
190
|
+
const role = (0, util_1.csaToRole)(match[3]);
|
|
191
|
+
const orig = (0, notationUtil_1.parseNumberSquare)(match[1]);
|
|
180
192
|
return {
|
|
181
193
|
from: orig,
|
|
182
|
-
to:
|
|
194
|
+
to: (0, notationUtil_1.parseNumberSquare)(match[2]),
|
|
183
195
|
promotion: ((_a = pos.board.get(orig)) === null || _a === void 0 ? void 0 : _a.role) !== role,
|
|
184
196
|
};
|
|
185
197
|
}
|
|
@@ -199,33 +211,17 @@ function parseCsaMoves(pos, csaMoves) {
|
|
|
199
211
|
exports.parseCsaMoves = parseCsaMoves;
|
|
200
212
|
// Making CSA formatted moves
|
|
201
213
|
function makeCsaMove(pos, move) {
|
|
202
|
-
if (types_1.isDrop(move)) {
|
|
203
|
-
return '00' +
|
|
214
|
+
if ((0, types_1.isDrop)(move)) {
|
|
215
|
+
return '00' + (0, notationUtil_1.makeNumberSquare)(move.to) + (0, util_1.roleToCsa)(move.role);
|
|
204
216
|
}
|
|
205
217
|
else {
|
|
206
218
|
const role = pos.board.getRole(move.from);
|
|
207
219
|
if (!role)
|
|
208
|
-
return
|
|
209
|
-
return
|
|
220
|
+
return undefined;
|
|
221
|
+
return ((0, notationUtil_1.makeNumberSquare)(move.from) +
|
|
222
|
+
(0, notationUtil_1.makeNumberSquare)(move.to) +
|
|
223
|
+
(0, util_1.roleToCsa)(move.promotion ? (0, variantUtil_1.promote)('shogi')(role) : role));
|
|
210
224
|
}
|
|
211
225
|
}
|
|
212
226
|
exports.makeCsaMove = makeCsaMove;
|
|
213
|
-
function makeCsaVariation(pos, variation) {
|
|
214
|
-
pos = pos.clone();
|
|
215
|
-
const line = [];
|
|
216
|
-
for (const m of variation) {
|
|
217
|
-
line.push((pos.turn === 'sente' ? '+' : '-') + makeCsaMove(pos, m));
|
|
218
|
-
pos.play(m);
|
|
219
|
-
}
|
|
220
|
-
return line.join('\n');
|
|
221
|
-
}
|
|
222
|
-
exports.makeCsaVariation = makeCsaVariation;
|
|
223
|
-
function normalizedCsaLines(csa) {
|
|
224
|
-
return csa
|
|
225
|
-
.replace(/,/g, '\n')
|
|
226
|
-
.split(/[\r\n]+/)
|
|
227
|
-
.map(l => l.trim())
|
|
228
|
-
.filter(l => l);
|
|
229
|
-
}
|
|
230
|
-
exports.normalizedCsaLines = normalizedCsaLines;
|
|
231
227
|
//# sourceMappingURL=csa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csa.js","sourceRoot":"","sources":["../../src/notation/csa/csa.ts"],"names":[],"mappings":"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"}
|