shogiops 0.2.7 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +0 -0
- package/README.md +0 -0
- package/attacks.d.ts +0 -0
- package/attacks.js +7 -7
- package/attacks.js.map +1 -1
- package/board.d.ts +3 -0
- package/board.js +31 -0
- package/board.js.map +1 -1
- package/compat.d.ts +6 -24
- package/compat.js +15 -171
- package/compat.js.map +1 -1
- package/csa.d.ts +4 -3
- package/csa.js +38 -33
- package/csa.js.map +1 -1
- package/csaUtil.d.ts +1 -1
- package/csaUtil.js +3 -3
- package/csaUtil.js.map +1 -1
- package/debug.d.ts +0 -0
- package/debug.js +29 -55
- package/debug.js.map +1 -1
- package/fen.d.ts +6 -5
- package/fen.js +53 -49
- package/fen.js.map +1 -1
- package/hand.d.ts +38 -0
- package/hand.js +74 -0
- package/hand.js.map +1 -0
- package/hash.d.ts +4 -3
- package/hash.js +9 -9
- package/hash.js.map +1 -1
- package/index.d.ts +4 -3
- package/index.js +3 -7
- package/index.js.map +1 -1
- package/kif.d.ts +5 -4
- package/kif.js +70 -65
- package/kif.js.map +1 -1
- package/kifHandicaps.d.ts +0 -0
- package/kifHandicaps.js +5 -0
- package/kifHandicaps.js.map +1 -1
- package/kifUtil.d.ts +0 -0
- package/kifUtil.js +4 -4
- package/kifUtil.js.map +1 -1
- package/package.json +9 -5
- package/setup.d.ts +2 -32
- package/setup.js +3 -74
- package/setup.js.map +1 -1
- package/shogi.d.ts +14 -7
- package/shogi.js +109 -106
- package/shogi.js.map +1 -1
- package/squareSet.d.ts +1 -5
- package/squareSet.js +0 -13
- package/squareSet.js.map +1 -1
- package/src/attacks.ts +0 -0
- package/src/board.ts +34 -0
- package/src/compat.ts +18 -197
- package/src/csa.ts +29 -21
- package/src/csaUtil.ts +3 -2
- package/src/debug.ts +25 -55
- package/src/fen.ts +42 -35
- package/src/hand.ts +94 -0
- package/src/hash.ts +8 -7
- package/src/index.ts +5 -5
- package/src/kif.ts +51 -43
- package/src/kifHandicaps.ts +5 -0
- package/src/kifUtil.ts +0 -0
- package/src/setup.ts +4 -91
- package/src/shogi.ts +75 -75
- package/src/squareSet.ts +1 -18
- package/src/transform.ts +3 -1
- package/src/types.ts +13 -16
- package/src/util.ts +2 -68
- package/src/variant.ts +44 -3
- package/src/variantUtil.ts +160 -0
- package/transform.d.ts +0 -0
- package/transform.js +3 -1
- package/transform.js.map +1 -1
- package/types.d.ts +3 -7
- package/types.js +13 -14
- package/types.js.map +1 -1
- package/util.d.ts +1 -4
- package/util.js +2 -54
- package/util.js.map +1 -1
- package/variant.d.ts +12 -1
- package/variant.js +38 -3
- package/variant.js.map +1 -1
- package/variantUtil.d.ts +13 -0
- package/variantUtil.js +160 -0
- package/variantUtil.js.map +1 -0
- package/san.d.ts +0 -6
- package/san.js +0 -135
- package/san.js.map +0 -1
- package/src/san.ts +0 -136
package/LICENSE.txt
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
File without changes
|
package/attacks.d.ts
CHANGED
|
File without changes
|
package/attacks.js
CHANGED
|
@@ -7,7 +7,7 @@ function computeRange(square, deltas) {
|
|
|
7
7
|
let range = squareSet_1.SquareSet.empty();
|
|
8
8
|
for (const delta of deltas) {
|
|
9
9
|
const sq = square + delta;
|
|
10
|
-
if (0 <= sq && sq < 81 && Math.abs(
|
|
10
|
+
if (0 <= sq && sq < 81 && Math.abs(util_1.squareFile(square) - util_1.squareFile(sq)) <= 2) {
|
|
11
11
|
range = range.with(sq);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -56,18 +56,18 @@ function pawnAttacks(color, square) {
|
|
|
56
56
|
return PAWN_ATTACKS[color][square];
|
|
57
57
|
}
|
|
58
58
|
exports.pawnAttacks = pawnAttacks;
|
|
59
|
-
const FILE_RANGE = tabulate(sq => squareSet_1.SquareSet.fromFile(
|
|
60
|
-
const RANK_RANGE = tabulate(sq => squareSet_1.SquareSet.fromRank(
|
|
61
|
-
const FORW_RANGE = tabulate(sq => squareSet_1.SquareSet.forwardRanks(
|
|
62
|
-
const BACK_RANGE = tabulate(sq => squareSet_1.SquareSet.backwardRanks(
|
|
59
|
+
const FILE_RANGE = tabulate(sq => squareSet_1.SquareSet.fromFile(util_1.squareFile(sq)).without(sq));
|
|
60
|
+
const RANK_RANGE = tabulate(sq => squareSet_1.SquareSet.fromRank(util_1.squareRank(sq)).without(sq));
|
|
61
|
+
const FORW_RANGE = tabulate(sq => squareSet_1.SquareSet.forwardRanks(util_1.squareRank(sq)).without(sq));
|
|
62
|
+
const BACK_RANGE = tabulate(sq => squareSet_1.SquareSet.backwardRanks(util_1.squareRank(sq)).without(sq));
|
|
63
63
|
const DIAG_RANGE = tabulate(sq => {
|
|
64
64
|
const diag = new squareSet_1.SquareSet(0x100401, 0x802008, 0x4010040);
|
|
65
|
-
const shift = 9 * (
|
|
65
|
+
const shift = 9 * (util_1.squareRank(sq) - util_1.squareFile(sq));
|
|
66
66
|
return (shift >= 0 ? diag.shl81(shift) : diag.shr81(-shift)).without(sq);
|
|
67
67
|
});
|
|
68
68
|
const ANTI_DIAG_RANGE = tabulate(sq => {
|
|
69
69
|
const diag = new squareSet_1.SquareSet(0x1010100, 0x202020, 0x40404);
|
|
70
|
-
const shift = 9 * (
|
|
70
|
+
const shift = 9 * (util_1.squareRank(sq) + util_1.squareFile(sq) - 8);
|
|
71
71
|
return (shift >= 0 ? diag.shl81(shift) : diag.shr81(-shift)).without(sq);
|
|
72
72
|
});
|
|
73
73
|
function hyperbola(bit, range, occupied) {
|
package/attacks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attacks.js","sourceRoot":"","sources":["src/attacks.ts"],"names":[],"mappings":";;;AAAA,iCAAgD;AAEhD,2CAAwC;AAExC,SAAS,YAAY,CAAC,MAAc,EAAE,MAAgB;IACpD,IAAI,KAAK,GAAG,qBAAS,CAAC,KAAK,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"attacks.js","sourceRoot":"","sources":["src/attacks.ts"],"names":[],"mappings":"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"}
|
package/board.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Square, Color, Role, Piece } from './types';
|
|
2
2
|
import { SquareSet } from './squareSet';
|
|
3
3
|
export declare class Board implements Iterable<[Square, Piece]> {
|
|
4
|
+
numberOfFiles: number;
|
|
5
|
+
numberOfRanks: number;
|
|
4
6
|
occupied: SquareSet;
|
|
5
7
|
gote: SquareSet;
|
|
6
8
|
sente: SquareSet;
|
|
@@ -21,6 +23,7 @@ export declare class Board implements Iterable<[Square, Piece]> {
|
|
|
21
23
|
private constructor();
|
|
22
24
|
static default(): Board;
|
|
23
25
|
reset(): void;
|
|
26
|
+
static minishogi(): Board;
|
|
24
27
|
static empty(): Board;
|
|
25
28
|
clear(): void;
|
|
26
29
|
clone(): Board;
|
package/board.js
CHANGED
|
@@ -11,6 +11,8 @@ class Board {
|
|
|
11
11
|
return board;
|
|
12
12
|
}
|
|
13
13
|
reset() {
|
|
14
|
+
this.numberOfFiles = 9;
|
|
15
|
+
this.numberOfRanks = 9;
|
|
14
16
|
this.occupied = new squareSet_1.SquareSet(0x7fd05ff, 0x0, 0x7fd05ff);
|
|
15
17
|
this.sente = new squareSet_1.SquareSet(0x7fd05ff, 0x0, 0x0);
|
|
16
18
|
this.gote = new squareSet_1.SquareSet(0x0, 0x0, 0x7fd05ff);
|
|
@@ -29,12 +31,37 @@ class Board {
|
|
|
29
31
|
this.horse = squareSet_1.SquareSet.empty();
|
|
30
32
|
this.dragon = squareSet_1.SquareSet.empty();
|
|
31
33
|
}
|
|
34
|
+
static minishogi() {
|
|
35
|
+
const board = new Board();
|
|
36
|
+
board.numberOfFiles = 5;
|
|
37
|
+
board.numberOfRanks = 5;
|
|
38
|
+
board.occupied = new squareSet_1.SquareSet(0x0, 0x43e000, 0x7c20000);
|
|
39
|
+
board.sente = new squareSet_1.SquareSet(0x0, 0x43e000, 0x0);
|
|
40
|
+
board.gote = new squareSet_1.SquareSet(0x0, 0x0, 0x7c20000);
|
|
41
|
+
board.pawn = new squareSet_1.SquareSet(0x0, 0x400000, 0x20000);
|
|
42
|
+
board.lance = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
43
|
+
board.knight = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
44
|
+
board.silver = new squareSet_1.SquareSet(0x0, 0x8000, 0x1000000);
|
|
45
|
+
board.gold = new squareSet_1.SquareSet(0x0, 0x4000, 0x2000000);
|
|
46
|
+
board.bishop = new squareSet_1.SquareSet(0x0, 0x10000, 0x800000);
|
|
47
|
+
board.rook = new squareSet_1.SquareSet(0x0, 0x20000, 0x400000);
|
|
48
|
+
board.tokin = new squareSet_1.SquareSet(0x0, 0, 0);
|
|
49
|
+
board.promotedlance = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
50
|
+
board.promotedknight = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
51
|
+
board.promotedsilver = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
52
|
+
board.horse = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
53
|
+
board.dragon = new squareSet_1.SquareSet(0x0, 0x0, 0x0);
|
|
54
|
+
board.king = new squareSet_1.SquareSet(0x0, 0x2000, 0x4000000);
|
|
55
|
+
return board;
|
|
56
|
+
}
|
|
32
57
|
static empty() {
|
|
33
58
|
const board = new Board();
|
|
34
59
|
board.clear();
|
|
35
60
|
return board;
|
|
36
61
|
}
|
|
37
62
|
clear() {
|
|
63
|
+
this.numberOfFiles = 9;
|
|
64
|
+
this.numberOfRanks = 9;
|
|
38
65
|
this.occupied = squareSet_1.SquareSet.empty();
|
|
39
66
|
for (const color of types_1.COLORS)
|
|
40
67
|
this[color] = squareSet_1.SquareSet.empty();
|
|
@@ -44,6 +71,8 @@ class Board {
|
|
|
44
71
|
clone() {
|
|
45
72
|
const board = new Board();
|
|
46
73
|
board.occupied = this.occupied;
|
|
74
|
+
board.numberOfFiles = this.numberOfFiles;
|
|
75
|
+
board.numberOfRanks = this.numberOfRanks;
|
|
47
76
|
for (const color of types_1.COLORS)
|
|
48
77
|
board[color] = this[color];
|
|
49
78
|
for (const role of types_1.ROLES)
|
|
@@ -53,6 +82,8 @@ class Board {
|
|
|
53
82
|
equals(other) {
|
|
54
83
|
if (!this.gote.equals(other.gote))
|
|
55
84
|
return false;
|
|
85
|
+
if (this.numberOfFiles !== other.numberOfFiles || this.numberOfRanks !== other.numberOfRanks)
|
|
86
|
+
return false;
|
|
56
87
|
return types_1.ROLES.every(role => this[role].equals(other[role]));
|
|
57
88
|
}
|
|
58
89
|
getColor(square) {
|
package/board.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["src/board.ts"],"names":[],"mappings":";;;AAAA,mCAAoE;AACpE,2CAAwC;AAExC,MAAa,KAAK;
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["src/board.ts"],"names":[],"mappings":"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"}
|
package/compat.d.ts
CHANGED
|
@@ -1,26 +1,8 @@
|
|
|
1
|
-
import { Rules, SquareName, Move,
|
|
1
|
+
import { Rules, SquareName, Move, Role } from './types';
|
|
2
2
|
import { Position } from './shogi';
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
5
|
-
export declare const C_RANK_NAMES: readonly ["1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
6
|
-
export declare type ChessRankName = typeof C_RANK_NAMES[number];
|
|
7
|
-
export declare type ChessSquareName = `${ChessFileName}${ChessRankName}`;
|
|
8
|
-
export declare function makeChessSquare(square: Square): ChessSquareName;
|
|
9
|
-
export declare function parseChessSquare(str: ChessSquareName): Square;
|
|
10
|
-
export declare function parseChessSquare(str: string): Square | undefined;
|
|
11
|
-
export declare function shogigroundDests(pos: Position): Map<ChessSquareName, ChessSquareName[]>;
|
|
12
|
-
export declare function shogigroundDropDests(pos: Position, role?: PocketRole): Map<PocketRole, ChessSquareName[]>;
|
|
3
|
+
export declare function shogigroundDests(pos: Position): Map<SquareName, SquareName[]>;
|
|
4
|
+
export declare function shogigroundDropDests(pos: Position, role?: Role): Map<Role, SquareName[]>;
|
|
13
5
|
export declare function scalashogiCharPair(move: Move): string;
|
|
14
|
-
export declare function
|
|
15
|
-
export declare function
|
|
16
|
-
export declare function
|
|
17
|
-
export declare function shogiCoordToChessCord(s: SquareName): ChessSquareName;
|
|
18
|
-
export declare function chessCoord(str: string): ChessSquareName | undefined;
|
|
19
|
-
export declare function shogiCoord(str: string): SquareName | undefined;
|
|
20
|
-
export declare function roleToLishogiChar(role: Role): string;
|
|
21
|
-
export declare function lishogiCharToRole(ch: 'p' | 'l' | 'n' | 's' | 'g' | 'b' | 'r' | 't' | 'u' | 'm' | 'a' | 'h' | 'd' | 'P' | 'L' | 'N' | 'S' | 'G' | 'B' | 'R' | 'T' | 'U' | 'M' | 'A' | 'H' | 'D'): Role;
|
|
22
|
-
export declare function lishogiCharToRole(ch: string): Role | undefined;
|
|
23
|
-
export declare function parseLishogiUci(str: string): Move | undefined;
|
|
24
|
-
export declare function makeLishogiUci(move: Move): string;
|
|
25
|
-
export declare function assureUsi(str: string): string | undefined;
|
|
26
|
-
export declare function assureLishogiUci(str: string): string | undefined;
|
|
6
|
+
export declare function usiToShogigroundMove(usi: string): SquareName[];
|
|
7
|
+
export declare function shogigroundMove(move: Move): SquareName[];
|
|
8
|
+
export declare function lishogiVariantRules(variant: string): Rules;
|
package/compat.js
CHANGED
|
@@ -1,31 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.lishogiVariantRules = exports.shogigroundMove = exports.usiToShogigroundMove = exports.scalashogiCharPair = exports.shogigroundDropDests = exports.shogigroundDests = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
const util_1 = require("./util");
|
|
6
|
-
exports.C_FILE_NAMES = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'];
|
|
7
|
-
exports.C_RANK_NAMES = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];
|
|
8
|
-
function makeChessSquare(square) {
|
|
9
|
-
return (exports.C_FILE_NAMES[(0, util_1.squareFile)(square)] + exports.C_RANK_NAMES[(0, util_1.squareRank)(square)]);
|
|
10
|
-
}
|
|
11
|
-
exports.makeChessSquare = makeChessSquare;
|
|
12
|
-
function parseChessSquare(str) {
|
|
13
|
-
if (str.length !== 2)
|
|
14
|
-
return;
|
|
15
|
-
const file = Math.abs(str.charCodeAt(0) - 'a'.charCodeAt(0));
|
|
16
|
-
const rank = Math.abs(str.charCodeAt(1) - '1'.charCodeAt(0));
|
|
17
|
-
if (file < 0 || file >= 9 || rank < 0 || rank >= 9)
|
|
18
|
-
return;
|
|
19
|
-
return file + 9 * rank;
|
|
20
|
-
}
|
|
21
|
-
exports.parseChessSquare = parseChessSquare;
|
|
22
6
|
function shogigroundDests(pos) {
|
|
23
7
|
const result = new Map();
|
|
24
8
|
const ctx = pos.ctx();
|
|
25
9
|
for (const [from, squares] of pos.allDests(ctx)) {
|
|
26
10
|
if (squares.nonEmpty()) {
|
|
27
|
-
const d = Array.from(squares, s =>
|
|
28
|
-
result.set(
|
|
11
|
+
const d = Array.from(squares, s => util_1.makeSquare(s));
|
|
12
|
+
result.set(util_1.makeSquare(from), d);
|
|
29
13
|
}
|
|
30
14
|
}
|
|
31
15
|
return result;
|
|
@@ -36,7 +20,7 @@ function shogigroundDropDests(pos, role) {
|
|
|
36
20
|
if (role) {
|
|
37
21
|
const squares = pos.dropDests(role);
|
|
38
22
|
if (squares.nonEmpty()) {
|
|
39
|
-
const d = Array.from(squares, s =>
|
|
23
|
+
const d = Array.from(squares, s => util_1.makeSquare(s));
|
|
40
24
|
result.set(role, d);
|
|
41
25
|
}
|
|
42
26
|
}
|
|
@@ -44,7 +28,7 @@ function shogigroundDropDests(pos, role) {
|
|
|
44
28
|
const ctx = pos.ctx();
|
|
45
29
|
for (const [r, squares] of pos.allDropDests(ctx)) {
|
|
46
30
|
if (squares.nonEmpty()) {
|
|
47
|
-
const d = Array.from(squares, s =>
|
|
31
|
+
const d = Array.from(squares, s => util_1.makeSquare(s));
|
|
48
32
|
result.set(r, d);
|
|
49
33
|
}
|
|
50
34
|
}
|
|
@@ -53,168 +37,28 @@ function shogigroundDropDests(pos, role) {
|
|
|
53
37
|
}
|
|
54
38
|
exports.shogigroundDropDests = shogigroundDropDests;
|
|
55
39
|
function scalashogiCharPair(move) {
|
|
56
|
-
if (
|
|
40
|
+
if (types_1.isDrop(move))
|
|
57
41
|
return String.fromCharCode(34 + move.to, 34 + 81 + 128 + ['rook', 'bishop', 'knight', 'pawn', 'gold', 'silver', 'lance'].indexOf(move.role));
|
|
58
42
|
else
|
|
59
43
|
return String.fromCharCode(34 + move.from, move.promotion ? 34 + move.to + 128 : 34 + move.to);
|
|
60
44
|
}
|
|
61
45
|
exports.scalashogiCharPair = scalashogiCharPair;
|
|
46
|
+
function usiToShogigroundMove(usi) {
|
|
47
|
+
const move = util_1.parseUsi(usi);
|
|
48
|
+
return util_1.defined(move) ? shogigroundMove(move) : [];
|
|
49
|
+
}
|
|
50
|
+
exports.usiToShogigroundMove = usiToShogigroundMove;
|
|
62
51
|
function shogigroundMove(move) {
|
|
63
|
-
return
|
|
52
|
+
return types_1.isDrop(move) ? [util_1.makeSquare(move.to)] : [util_1.makeSquare(move.from), util_1.makeSquare(move.to)];
|
|
64
53
|
}
|
|
65
54
|
exports.shogigroundMove = shogigroundMove;
|
|
66
55
|
function lishogiVariantRules(variant) {
|
|
67
56
|
switch (variant) {
|
|
68
|
-
case '
|
|
69
|
-
|
|
57
|
+
case 'minishogi':
|
|
58
|
+
return 'minishogi';
|
|
59
|
+
default:
|
|
70
60
|
return 'shogi';
|
|
71
61
|
}
|
|
72
62
|
}
|
|
73
63
|
exports.lishogiVariantRules = lishogiVariantRules;
|
|
74
|
-
function chessCoordToShogiCoord(s) {
|
|
75
|
-
return (0, util_1.makeSquare)(parseChessSquare(s));
|
|
76
|
-
}
|
|
77
|
-
exports.chessCoordToShogiCoord = chessCoordToShogiCoord;
|
|
78
|
-
function shogiCoordToChessCord(s) {
|
|
79
|
-
return makeChessSquare((0, util_1.parseSquare)(s));
|
|
80
|
-
}
|
|
81
|
-
exports.shogiCoordToChessCord = shogiCoordToChessCord;
|
|
82
|
-
function chessCoord(str) {
|
|
83
|
-
if (str.match(/^[1-9][a-i]$/))
|
|
84
|
-
return shogiCoordToChessCord(str);
|
|
85
|
-
if (str.match(/^[a-i][1-9]$/))
|
|
86
|
-
return str;
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
exports.chessCoord = chessCoord;
|
|
90
|
-
function shogiCoord(str) {
|
|
91
|
-
if (str.match(/^[1-9][a-i]$/))
|
|
92
|
-
return str;
|
|
93
|
-
if (str.match(/^[a-i][1-9]$/))
|
|
94
|
-
return chessCoordToShogiCoord(str);
|
|
95
|
-
else
|
|
96
|
-
return undefined;
|
|
97
|
-
}
|
|
98
|
-
exports.shogiCoord = shogiCoord;
|
|
99
|
-
function roleToLishogiChar(role) {
|
|
100
|
-
switch (role) {
|
|
101
|
-
case 'pawn':
|
|
102
|
-
return 'p';
|
|
103
|
-
case 'lance':
|
|
104
|
-
return 'l';
|
|
105
|
-
case 'knight':
|
|
106
|
-
return 'n';
|
|
107
|
-
case 'silver':
|
|
108
|
-
return 's';
|
|
109
|
-
case 'gold':
|
|
110
|
-
return 'g';
|
|
111
|
-
case 'bishop':
|
|
112
|
-
return 'b';
|
|
113
|
-
case 'rook':
|
|
114
|
-
return 'r';
|
|
115
|
-
case 'tokin':
|
|
116
|
-
return 't';
|
|
117
|
-
case 'promotedlance':
|
|
118
|
-
return 'u';
|
|
119
|
-
case 'promotedknight':
|
|
120
|
-
return 'm';
|
|
121
|
-
case 'promotedsilver':
|
|
122
|
-
return 'a';
|
|
123
|
-
case 'horse':
|
|
124
|
-
return 'h';
|
|
125
|
-
case 'dragon':
|
|
126
|
-
return 'd';
|
|
127
|
-
case 'king':
|
|
128
|
-
return 'k';
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.roleToLishogiChar = roleToLishogiChar;
|
|
132
|
-
function lishogiCharToRole(ch) {
|
|
133
|
-
switch (ch) {
|
|
134
|
-
case 'P':
|
|
135
|
-
case 'p':
|
|
136
|
-
return 'pawn';
|
|
137
|
-
case 'L':
|
|
138
|
-
case 'l':
|
|
139
|
-
return 'lance';
|
|
140
|
-
case 'N':
|
|
141
|
-
case 'n':
|
|
142
|
-
return 'knight';
|
|
143
|
-
case 'S':
|
|
144
|
-
case 's':
|
|
145
|
-
return 'silver';
|
|
146
|
-
case 'G':
|
|
147
|
-
case 'g':
|
|
148
|
-
return 'gold';
|
|
149
|
-
case 'B':
|
|
150
|
-
case 'b':
|
|
151
|
-
return 'bishop';
|
|
152
|
-
case 'R':
|
|
153
|
-
case 'r':
|
|
154
|
-
return 'rook';
|
|
155
|
-
case 'T':
|
|
156
|
-
case 't':
|
|
157
|
-
return 'tokin';
|
|
158
|
-
case 'U':
|
|
159
|
-
case 'u':
|
|
160
|
-
return 'promotedlance';
|
|
161
|
-
case 'M':
|
|
162
|
-
case 'm':
|
|
163
|
-
return 'promotedknight';
|
|
164
|
-
case 'A':
|
|
165
|
-
case 'a':
|
|
166
|
-
return 'promotedsilver';
|
|
167
|
-
case 'H':
|
|
168
|
-
case 'h':
|
|
169
|
-
return 'horse';
|
|
170
|
-
case 'D':
|
|
171
|
-
case 'd':
|
|
172
|
-
return 'dragon';
|
|
173
|
-
case 'K':
|
|
174
|
-
case 'k':
|
|
175
|
-
return 'king';
|
|
176
|
-
default:
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
exports.lishogiCharToRole = lishogiCharToRole;
|
|
181
|
-
function parseLishogiUci(str) {
|
|
182
|
-
if (str[1] === '*' && str.length === 4) {
|
|
183
|
-
const role = lishogiCharToRole(str[0]);
|
|
184
|
-
const to = parseChessSquare(str.slice(2));
|
|
185
|
-
if ((0, util_1.defined)(role) && (0, util_1.defined)(to))
|
|
186
|
-
return { role, to };
|
|
187
|
-
}
|
|
188
|
-
else if (str.length === 4 || str.length === 5) {
|
|
189
|
-
const from = parseChessSquare(str.slice(0, 2));
|
|
190
|
-
const to = parseChessSquare(str.slice(2, 4));
|
|
191
|
-
const promotion = str[4] === '+' ? true : false;
|
|
192
|
-
if ((0, util_1.defined)(from) && (0, util_1.defined)(to))
|
|
193
|
-
return { from, to, promotion };
|
|
194
|
-
}
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
exports.parseLishogiUci = parseLishogiUci;
|
|
198
|
-
function makeLishogiUci(move) {
|
|
199
|
-
if ((0, types_1.isDrop)(move))
|
|
200
|
-
return `${roleToLishogiChar(move.role).toUpperCase()}*${makeChessSquare(move.to)}`;
|
|
201
|
-
return makeChessSquare(move.from) + makeChessSquare(move.to) + (move.promotion ? '+' : '');
|
|
202
|
-
}
|
|
203
|
-
exports.makeLishogiUci = makeLishogiUci;
|
|
204
|
-
function assureUsi(str) {
|
|
205
|
-
if (str.match(/^([1-9][a-i]|([RBGSNLP]\*))[1-9][a-i](\+|\=)?$/))
|
|
206
|
-
return str;
|
|
207
|
-
if (str.match(/^([a-i][1-9]|([RBGSNLP]\*))[a-i][1-9](\+|\=)?$/))
|
|
208
|
-
return (0, util_1.makeUsi)(parseLishogiUci(str));
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
exports.assureUsi = assureUsi;
|
|
212
|
-
function assureLishogiUci(str) {
|
|
213
|
-
if (str.match(/^([a-i][1-9]|([RBGSNLP]\*))[a-i][1-9](\+|\=)?$/))
|
|
214
|
-
return str;
|
|
215
|
-
if (str.match(/^([1-9][a-i]|([RBGSNLP]\*))[1-9][a-i](\+|\=)?$/))
|
|
216
|
-
return makeLishogiUci((0, util_1.parseUsi)(str));
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
exports.assureLishogiUci = assureLishogiUci;
|
|
220
64
|
//# sourceMappingURL=compat.js.map
|
package/compat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compat.js","sourceRoot":"","sources":["src/compat.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"compat.js","sourceRoot":"","sources":["src/compat.ts"],"names":[],"mappings":"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"}
|
package/csa.d.ts
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { Result } from '@badrap/result';
|
|
2
2
|
import { Board } from './board';
|
|
3
|
-
import {
|
|
3
|
+
import { Setup } from './setup';
|
|
4
4
|
import { Position } from './shogi';
|
|
5
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][];
|