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.
Files changed (115) hide show
  1. package/attacks.js +32 -48
  2. package/attacks.js.map +1 -1
  3. package/board.d.ts +3 -0
  4. package/board.js +60 -33
  5. package/board.js.map +1 -1
  6. package/compat.d.ts +6 -24
  7. package/compat.js +20 -185
  8. package/compat.js.map +1 -1
  9. package/debug.js +37 -72
  10. package/debug.js.map +1 -1
  11. package/hand.d.ts +38 -0
  12. package/hand.js +69 -0
  13. package/hand.js.map +1 -0
  14. package/hash.d.ts +4 -3
  15. package/hash.js +12 -20
  16. package/hash.js.map +1 -1
  17. package/index.d.ts +13 -10
  18. package/index.js +22 -64
  19. package/index.js.map +1 -1
  20. package/{csa.d.ts → notation/csa/csa.d.ts} +9 -9
  21. package/notation/csa/csa.js +213 -0
  22. package/notation/csa/csa.js.map +1 -0
  23. package/notation/japanese.d.ts +3 -0
  24. package/notation/japanese.js +61 -0
  25. package/notation/japanese.js.map +1 -0
  26. package/{kif.d.ts → notation/kif/kif.d.ts} +10 -9
  27. package/notation/kif/kif.js +232 -0
  28. package/notation/kif/kif.js.map +1 -0
  29. package/{kifHandicaps.d.ts → notation/kif/kifHandicaps.d.ts} +0 -0
  30. package/{kifHandicaps.js → notation/kif/kifHandicaps.js} +7 -7
  31. package/notation/kif/kifHandicaps.js.map +1 -0
  32. package/notation/kitaoKawasaki.d.ts +3 -0
  33. package/notation/kitaoKawasaki.js +26 -0
  34. package/notation/kitaoKawasaki.js.map +1 -0
  35. package/notation/kitaokawasaki.d.ts +0 -0
  36. package/notation/kitaokawasaki.js +2 -0
  37. package/notation/kitaokawasaki.js.map +1 -0
  38. package/notation/notationUtil.d.ts +12 -0
  39. package/{kifUtil.js → notation/notationUtil.js} +39 -40
  40. package/notation/notationUtil.js.map +1 -0
  41. package/notation/western.d.ts +3 -0
  42. package/notation/western.js +23 -0
  43. package/notation/western.js.map +1 -0
  44. package/notation/westernEngine.d.ts +3 -0
  45. package/notation/westernEngine.js +23 -0
  46. package/notation/westernEngine.js.map +1 -0
  47. package/package.json +54 -37
  48. package/setup.d.ts +2 -32
  49. package/setup.js +5 -80
  50. package/setup.js.map +1 -1
  51. package/sfen.d.ts +33 -0
  52. package/sfen.js +188 -0
  53. package/sfen.js.map +1 -0
  54. package/shogi.d.ts +14 -7
  55. package/shogi.js +138 -141
  56. package/shogi.js.map +1 -1
  57. package/squareSet.d.ts +1 -5
  58. package/squareSet.js +1 -18
  59. package/squareSet.js.map +1 -1
  60. package/src/board.ts +34 -0
  61. package/src/compat.ts +18 -197
  62. package/src/debug.ts +26 -56
  63. package/src/hand.ts +94 -0
  64. package/src/hash.ts +8 -7
  65. package/src/index.ts +16 -12
  66. package/src/{csa.ts → notation/csa/csa.ts} +53 -52
  67. package/src/notation/japanese.ts +74 -0
  68. package/src/{kif.ts → notation/kif/kif.ts} +77 -78
  69. package/src/{kifHandicaps.ts → notation/kif/kifHandicaps.ts} +5 -0
  70. package/src/notation/kitaoKawasaki.ts +24 -0
  71. package/src/{kifUtil.ts → notation/notationUtil.ts} +37 -28
  72. package/src/notation/western.ts +21 -0
  73. package/src/notation/westernEngine.ts +21 -0
  74. package/src/setup.ts +4 -91
  75. package/src/sfen.ts +190 -0
  76. package/src/shogi.ts +75 -75
  77. package/src/squareSet.ts +1 -18
  78. package/src/transform.ts +3 -1
  79. package/src/types.ts +13 -16
  80. package/src/util.ts +8 -73
  81. package/src/variant.ts +44 -3
  82. package/src/variantUtil.ts +160 -0
  83. package/transform.js +18 -24
  84. package/transform.js.map +1 -1
  85. package/types.d.ts +3 -7
  86. package/types.js +18 -24
  87. package/types.js.map +1 -1
  88. package/util.d.ts +4 -7
  89. package/util.js +24 -96
  90. package/util.js.map +1 -1
  91. package/variant.d.ts +12 -1
  92. package/variant.js +42 -16
  93. package/variant.js.map +1 -1
  94. package/variantUtil.d.ts +13 -0
  95. package/variantUtil.js +147 -0
  96. package/variantUtil.js.map +1 -0
  97. package/csa.js +0 -229
  98. package/csa.js.map +0 -1
  99. package/csaUtil.d.ts +0 -3
  100. package/csaUtil.js +0 -21
  101. package/csaUtil.js.map +0 -1
  102. package/fen.d.ts +0 -32
  103. package/fen.js +0 -197
  104. package/fen.js.map +0 -1
  105. package/kif.js +0 -247
  106. package/kif.js.map +0 -1
  107. package/kifHandicaps.js.map +0 -1
  108. package/kifUtil.d.ts +0 -9
  109. package/kifUtil.js.map +0 -1
  110. package/san.d.ts +0 -6
  111. package/san.js +0 -135
  112. package/san.js.map +0 -1
  113. package/src/csaUtil.ts +0 -15
  114. package/src/fen.ts +0 -183
  115. package/src/san.ts +0 -136
package/fen.js DELETED
@@ -1,197 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeFen = exports.makePockets = exports.makePocket = exports.makeBoardFen = exports.makePiece = exports.parsePiece = exports.parseFen = exports.parsePockets = exports.parseBoardFen = exports.FenError = exports.InvalidFen = exports.EMPTY_FEN = exports.EMPTY_EPD = exports.EMPTY_BOARD_FEN = exports.INITIAL_FEN = exports.INITIAL_EPD = exports.INITIAL_BOARD_FEN = void 0;
4
- const result_1 = require("@badrap/result");
5
- const types_1 = require("./types");
6
- const board_1 = require("./board");
7
- const setup_1 = require("./setup");
8
- const util_1 = require("./util");
9
- exports.INITIAL_BOARD_FEN = 'lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL';
10
- exports.INITIAL_EPD = exports.INITIAL_BOARD_FEN + ' b -';
11
- exports.INITIAL_FEN = exports.INITIAL_EPD + ' 1';
12
- exports.EMPTY_BOARD_FEN = '9/9/9/9/9/9/9/9/9';
13
- exports.EMPTY_EPD = exports.EMPTY_BOARD_FEN + ' b -';
14
- exports.EMPTY_FEN = exports.EMPTY_EPD + ' 1';
15
- var InvalidFen;
16
- (function (InvalidFen) {
17
- InvalidFen["Fen"] = "ERR_FEN";
18
- InvalidFen["Board"] = "ERR_BOARD";
19
- InvalidFen["Pockets"] = "ERR_POCKETS";
20
- InvalidFen["Turn"] = "ERR_TURN";
21
- InvalidFen["Fullmoves"] = "ERR_FULLMOVES";
22
- })(InvalidFen = exports.InvalidFen || (exports.InvalidFen = {}));
23
- class FenError extends Error {
24
- }
25
- exports.FenError = FenError;
26
- function parseSmallUint(str) {
27
- return /^\d{1,4}$/.test(str) ? parseInt(str, 10) : undefined;
28
- }
29
- function charToPiece(ch) {
30
- const role = util_1.charToRole(ch);
31
- return role && { role, color: ch.toLowerCase() === ch ? 'gote' : 'sente' };
32
- }
33
- function parseBoardFen(boardPart) {
34
- const board = board_1.Board.empty();
35
- let rank = 8;
36
- let file = 0;
37
- for (let i = 0; i < boardPart.length; i++) {
38
- let c = boardPart[i];
39
- if (c === '/' && file === 9) {
40
- file = 0;
41
- rank--;
42
- }
43
- else {
44
- const step = parseInt(c, 10);
45
- if (step > 0)
46
- file += step;
47
- else {
48
- if (file >= 9 || rank < 0)
49
- return result_1.Result.err(new FenError(InvalidFen.Board));
50
- if (c === '+' && i + 1 < boardPart.length)
51
- c += boardPart[++i];
52
- const square = file + rank * 9;
53
- const piece = charToPiece(c);
54
- if (!piece)
55
- return result_1.Result.err(new FenError(InvalidFen.Board));
56
- board.set(square, piece);
57
- file++;
58
- }
59
- }
60
- }
61
- if (rank !== 0 || file !== 9)
62
- return result_1.Result.err(new FenError(InvalidFen.Board));
63
- return result_1.Result.ok(board);
64
- }
65
- exports.parseBoardFen = parseBoardFen;
66
- function parsePockets(pocketPart) {
67
- if (pocketPart.toLowerCase().includes('k'))
68
- return result_1.Result.err(new FenError(InvalidFen.Pockets));
69
- const pockets = setup_1.Material.empty();
70
- for (let i = 0; i < pocketPart.length; i++) {
71
- if (pocketPart[i] === '-')
72
- break;
73
- // max 99
74
- let count;
75
- if (parseInt(pocketPart[i]) >= 0) {
76
- count = parseInt(pocketPart[i++], 10);
77
- if (parseInt(pocketPart[i]) >= 0)
78
- count = count * 10 + parseInt(pocketPart[i++], 10);
79
- }
80
- else
81
- count = 1;
82
- const piece = charToPiece(pocketPart[i]);
83
- if (!piece)
84
- return result_1.Result.err(new FenError(InvalidFen.Pockets));
85
- pockets[piece.color][piece.role] += count;
86
- }
87
- return result_1.Result.ok(pockets);
88
- }
89
- exports.parsePockets = parsePockets;
90
- function parseFen(fen) {
91
- const parts = fen.split(' ');
92
- // Board
93
- const boardPart = parts.shift();
94
- const board = parseBoardFen(boardPart);
95
- // Turn
96
- const turnPart = parts.shift();
97
- let turn;
98
- if (!util_1.defined(turnPart) || turnPart === 'b')
99
- turn = 'sente';
100
- else if (turnPart === 'w')
101
- turn = 'gote';
102
- else
103
- return result_1.Result.err(new FenError(InvalidFen.Turn));
104
- // Pocket
105
- const pocketPart = parts.shift();
106
- let pockets;
107
- if (!util_1.defined(pocketPart))
108
- pockets = result_1.Result.ok(setup_1.Material.empty());
109
- else
110
- pockets = parsePockets(pocketPart);
111
- // Turn
112
- const fullmovesPart = parts.shift();
113
- const fullmoves = util_1.defined(fullmovesPart) ? parseSmallUint(fullmovesPart) : 1;
114
- if (!util_1.defined(fullmoves))
115
- return result_1.Result.err(new FenError(InvalidFen.Fullmoves));
116
- if (parts.length > 0)
117
- return result_1.Result.err(new FenError(InvalidFen.Fen));
118
- return board.chain(board => pockets.map(pockets => {
119
- return {
120
- board,
121
- pockets,
122
- turn,
123
- fullmoves: Math.max(1, fullmoves),
124
- };
125
- }));
126
- }
127
- exports.parseFen = parseFen;
128
- function parsePiece(str) {
129
- if (!str)
130
- return;
131
- const piece = charToPiece(str[0]);
132
- if (!piece)
133
- return;
134
- else if (str.length > 1 && str[1] !== '+')
135
- return;
136
- return piece;
137
- }
138
- exports.parsePiece = parsePiece;
139
- function makePiece(piece) {
140
- let r = util_1.roleToChar(piece.role);
141
- if (piece.color === 'sente')
142
- r = r.toUpperCase();
143
- return r;
144
- }
145
- exports.makePiece = makePiece;
146
- function makeBoardFen(board) {
147
- let fen = '';
148
- let empty = 0;
149
- for (let rank = 8; rank >= 0; rank--) {
150
- for (let file = 0; file < 9; file++) {
151
- const square = file + rank * 9;
152
- const piece = board.get(square);
153
- if (!piece)
154
- empty++;
155
- else {
156
- if (empty > 0) {
157
- fen += empty;
158
- empty = 0;
159
- }
160
- fen += makePiece(piece);
161
- }
162
- if (file === 8) {
163
- if (empty > 0) {
164
- fen += empty;
165
- empty = 0;
166
- }
167
- if (rank !== 0)
168
- fen += '/';
169
- }
170
- }
171
- }
172
- return fen;
173
- }
174
- exports.makeBoardFen = makeBoardFen;
175
- function makePocket(material) {
176
- return types_1.POCKET_ROLES.map(role => {
177
- const r = util_1.roleToChar(role);
178
- const n = material[role];
179
- return n > 1 ? n + r : n === 1 ? r : '';
180
- }).join('');
181
- }
182
- exports.makePocket = makePocket;
183
- function makePockets(pocket) {
184
- const pockets = makePocket(pocket.sente).toUpperCase() + makePocket(pocket.gote);
185
- return pockets === '' ? '-' : pockets;
186
- }
187
- exports.makePockets = makePockets;
188
- function makeFen(setup, opts) {
189
- return [
190
- makeBoardFen(setup.board),
191
- util_1.toBW(setup.turn),
192
- makePockets(setup.pockets),
193
- ...((opts === null || opts === void 0 ? void 0 : opts.epd) ? [] : [Math.max(1, Math.min(setup.fullmoves, 9999))]),
194
- ].join(' ');
195
- }
196
- exports.makeFen = makeFen;
197
- //# sourceMappingURL=fen.js.map
package/fen.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"fen.js","sourceRoot":"","sources":["src/fen.ts"],"names":[],"mappings":"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"}
package/kif.js DELETED
@@ -1,247 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeKifVariation = exports.makeKifMove = exports.parseKifMoves = exports.parseKifMove = exports.parseTags = exports.parseKifHand = exports.parseKifBoard = exports.parseKifPositionHeader = exports.parseKifHeader = exports.makeKifPocket = exports.makeKifBoard = exports.makeKifPositionHeader = exports.makeKifHeader = exports.KifError = exports.InvalidKif = void 0;
4
- const result_1 = require("@badrap/result");
5
- const board_1 = require("./board");
6
- const fen_1 = require("./fen");
7
- const kifHandicaps_1 = require("./kifHandicaps");
8
- const setup_1 = require("./setup");
9
- const types_1 = require("./types");
10
- const util_1 = require("./util");
11
- const kifUtil_1 = require("./kifUtil");
12
- //
13
- // KIF HEADER
14
- //
15
- var InvalidKif;
16
- (function (InvalidKif) {
17
- InvalidKif["Kif"] = "ERR_KIF";
18
- InvalidKif["Board"] = "ERR_BOARD";
19
- InvalidKif["Handicap"] = "ERR_HANDICAP";
20
- InvalidKif["Pockets"] = "ERR_POCKETS";
21
- })(InvalidKif = exports.InvalidKif || (exports.InvalidKif = {}));
22
- class KifError extends Error {
23
- }
24
- exports.KifError = KifError;
25
- // Export
26
- function makeKifHeader(setup) {
27
- const handicap = kifHandicaps_1.sfenToHandicapName(fen_1.makeFen(setup, { epd: true }));
28
- if (util_1.defined(handicap))
29
- return '手合割:' + handicap;
30
- return makeKifPositionHeader(setup);
31
- }
32
- exports.makeKifHeader = makeKifHeader;
33
- function makeKifPositionHeader(setup) {
34
- return [
35
- '後手の持駒:' + makeKifPocket(setup.pockets.gote),
36
- makeKifBoard(setup.board),
37
- '先手の持駒:' + makeKifPocket(setup.pockets.sente),
38
- ...(setup.turn === 'gote' ? ['後手番'] : []),
39
- ].join('\n');
40
- }
41
- exports.makeKifPositionHeader = makeKifPositionHeader;
42
- function makeKifBoard(board) {
43
- let kifBoard = ' 9 8 7 6 5 4 3 2 1\n+---------------------------+\n';
44
- for (let rank = 8; rank >= 0; rank--) {
45
- for (let file = 0; file < 9; file++) {
46
- const square = file + rank * 9;
47
- const piece = board.get(square);
48
- if (file === 0) {
49
- kifBoard += '|';
50
- }
51
- if (!piece)
52
- kifBoard += ' ・';
53
- else {
54
- if (piece.color === 'gote')
55
- kifBoard += 'v' + util_1.roleTo1Kanji(piece.role);
56
- else
57
- kifBoard += ' ' + util_1.roleTo1Kanji(piece.role);
58
- }
59
- if (file === 8) {
60
- kifBoard += '|' + kifUtil_1.numberToKanji(9 - rank) + '\n';
61
- }
62
- }
63
- }
64
- kifBoard += '+---------------------------+';
65
- return kifBoard;
66
- }
67
- exports.makeKifBoard = makeKifBoard;
68
- function makeKifPocket(material) {
69
- if (material.isEmpty())
70
- return 'なし';
71
- return types_1.POCKET_ROLES.map(role => {
72
- const r = util_1.roleTo1Kanji(role);
73
- const n = material[role];
74
- return n > 1 ? r + kifUtil_1.numberToKanji(n) : n === 1 ? r : '';
75
- })
76
- .filter(p => p.length > 0)
77
- .join(' ');
78
- }
79
- exports.makeKifPocket = makeKifPocket;
80
- // Import
81
- function parseKifHeader(kif) {
82
- const lines = kifUtil_1.normalizedKifLines(kif);
83
- const handicap = lines.find(l => l.startsWith('手合割:'));
84
- const hSfen = util_1.defined(handicap) ? kifHandicaps_1.handicapNameToSfen(handicap.split(':')[1]) : fen_1.INITIAL_FEN;
85
- return parseKifPositionHeader(kif).unwrap(kifBoard => result_1.Result.ok(kifBoard), () => {
86
- if (!util_1.defined(hSfen))
87
- return result_1.Result.err(new KifError(InvalidKif.Handicap));
88
- return fen_1.parseFen(hSfen);
89
- });
90
- }
91
- exports.parseKifHeader = parseKifHeader;
92
- function parseKifPositionHeader(kif) {
93
- const lines = kifUtil_1.normalizedKifLines(kif);
94
- const gotePocketStr = lines.find(l => l.startsWith('後手の持駒:'));
95
- const sentePocketStr = lines.find(l => l.startsWith('先手の持駒:'));
96
- const turn = lines.some(l => l.startsWith('後手番')) ? 'gote' : 'sente';
97
- const board = parseKifBoard(kif);
98
- const gotePocket = util_1.defined(gotePocketStr)
99
- ? parseKifHand(gotePocketStr.split(':')[1])
100
- : result_1.Result.ok(setup_1.MaterialSide.empty());
101
- const sentePocket = util_1.defined(sentePocketStr)
102
- ? parseKifHand(sentePocketStr.split(':')[1])
103
- : result_1.Result.ok(setup_1.MaterialSide.empty());
104
- return board.chain(board => gotePocket.chain(gPocket => sentePocket.map(sPocket => {
105
- return {
106
- board,
107
- pockets: new setup_1.Material(gPocket, sPocket),
108
- turn,
109
- fullmoves: 1,
110
- };
111
- })));
112
- }
113
- exports.parseKifPositionHeader = parseKifPositionHeader;
114
- function parseKifBoard(kifBoard) {
115
- const lines = kifUtil_1.normalizedKifLines(kifBoard).filter(l => l.startsWith('|'));
116
- if (lines.length !== 9)
117
- return result_1.Result.err(new KifError(InvalidKif.Board));
118
- const board = board_1.Board.empty();
119
- let file = 0;
120
- let rank = 9;
121
- for (const l of lines) {
122
- file = 0;
123
- rank--;
124
- let gote = false;
125
- let prom = false;
126
- for (const c of l) {
127
- switch (c) {
128
- case '・':
129
- file++;
130
- break;
131
- case 'v':
132
- gote = true;
133
- break;
134
- case '成':
135
- prom = true;
136
- break;
137
- default:
138
- if (file > 9 || rank < 0)
139
- return result_1.Result.err(new KifError(InvalidKif.Board));
140
- const role = util_1.kanjiToRole(c);
141
- if (util_1.defined(role)) {
142
- const square = file + rank * 9;
143
- const piece = { role: prom ? util_1.promote(role) : role, color: (gote ? 'gote' : 'sente') };
144
- board.set(square, piece);
145
- prom = false;
146
- gote = false;
147
- file++;
148
- }
149
- }
150
- }
151
- }
152
- if (rank !== 0 || file !== 9)
153
- return result_1.Result.err(new KifError(InvalidKif.Board));
154
- return result_1.Result.ok(board);
155
- }
156
- exports.parseKifBoard = parseKifBoard;
157
- function parseKifHand(pocketPart) {
158
- const pockets = setup_1.MaterialSide.empty();
159
- const pieces = pocketPart.replace(/ /g, ' ').trim().split(' ');
160
- if (pocketPart.includes('なし'))
161
- return result_1.Result.ok(pockets);
162
- for (const piece of pieces) {
163
- for (let i = 0; i < piece.length; i++) {
164
- const role = util_1.kanjiToRole(piece[i++]);
165
- if (!role)
166
- return result_1.Result.err(new KifError(InvalidKif.Pockets));
167
- let countStr = '';
168
- while (i < piece.length && ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'].includes(piece[i]))
169
- countStr += piece[i++];
170
- const count = kifUtil_1.kanjiToNumber(countStr) || 1;
171
- pockets[role] += count;
172
- }
173
- }
174
- return result_1.Result.ok(pockets);
175
- }
176
- exports.parseKifHand = parseKifHand;
177
- function parseTags(kif) {
178
- return kifUtil_1.normalizedKifLines(kif)
179
- .filter(l => !l.startsWith('#') && !l.startsWith('*'))
180
- .map(l => l.replace(':', ':').split(/:(.*)/, 2));
181
- }
182
- exports.parseTags = parseTags;
183
- //
184
- // KIF MOVES
185
- //
186
- // Parsing kif moves
187
- function parseKifMove(kifMove, lastDest = undefined) {
188
- var _a, _b;
189
- // Normal move
190
- const match = kifMove.match(/((?:[123456789][一二三四五六七八九]|同\s?))(玉|飛|龍|角|馬|金|銀|成銀|桂|成桂|香|成香|歩|と)(成)?\(([1-9][1-9])\)/);
191
- if (!match) {
192
- // Drop
193
- const match = kifMove.match(/((?:[123456789][一二三四五六七八九]|同\s?))(飛|角|金|銀|桂|香|歩)打/);
194
- if (!match)
195
- return;
196
- const move = {
197
- role: util_1.kanjiToRole(match[2]),
198
- to: (_a = kifUtil_1.parseKifSquare(match[1])) !== null && _a !== void 0 ? _a : lastDest,
199
- };
200
- return move;
201
- }
202
- return {
203
- from: kifUtil_1.parseKifSquare(match[4]),
204
- to: (_b = kifUtil_1.parseKifSquare(match[1])) !== null && _b !== void 0 ? _b : lastDest,
205
- promotion: !!match[3],
206
- };
207
- }
208
- exports.parseKifMove = parseKifMove;
209
- function parseKifMoves(kifMoves, lastDest = undefined) {
210
- const moves = [];
211
- for (const m of kifMoves) {
212
- const move = parseKifMove(m, lastDest);
213
- if (!move)
214
- return moves;
215
- lastDest = move.to;
216
- moves.push(move);
217
- }
218
- return moves;
219
- }
220
- exports.parseKifMoves = parseKifMoves;
221
- // Making kif formatted moves
222
- function makeKifMove(pos, move, same = false) {
223
- const moveDest = same ? '同 ' : kifUtil_1.kifDestSquare(move.to);
224
- if (types_1.isDrop(move)) {
225
- return moveDest + util_1.roleTo1Kanji(move.role) + '打';
226
- }
227
- else {
228
- const role = pos.board.getRole(move.from);
229
- if (!role)
230
- return '反則';
231
- return moveDest + util_1.roleTo2Kanji(role) + (move.promotion ? '成' : '') + '(' + kifUtil_1.kifOrigSquare(move.from) + ')';
232
- }
233
- }
234
- exports.makeKifMove = makeKifMove;
235
- function makeKifVariation(pos, variation, lastDest = undefined, startTurn = 1) {
236
- pos = pos.clone();
237
- const line = [];
238
- const padding = (startTurn + variation.length - 1).toString().length;
239
- for (const m of variation) {
240
- line.push((startTurn++).toString().padStart(padding) + ' ' + makeKifMove(pos, m, m.to === lastDest));
241
- pos.play(m);
242
- lastDest = m.to;
243
- }
244
- return line.join('\n');
245
- }
246
- exports.makeKifVariation = makeKifVariation;
247
- //# sourceMappingURL=kif.js.map
package/kif.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"kif.js","sourceRoot":"","sources":["src/kif.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kifHandicaps.js","sourceRoot":"","sources":["src/kifHandicaps.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC7C,KAAK,+DAA+D;YAClE,OAAO,IAAI,CAAC;QACd,KAAK,+DAA+D;YAClE,OAAO,KAAK,CAAC;QACf,KAAK,+DAA+D;YAClE,OAAO,MAAM,CAAC;QAChB,KAAK,6DAA6D;YAChE,OAAO,KAAK,CAAC;QACf,KAAK,6DAA6D;YAChE,OAAO,MAAM,CAAC;QAChB,KAAK,6DAA6D;YAChE,OAAO,MAAM,CAAC;QAChB,KAAK,2DAA2D;YAC9D,OAAO,MAAM,CAAC;QAChB,KAAK,2DAA2D;YAC9D,OAAO,MAAM,CAAC;QAChB,KAAK,yDAAyD;YAC5D,OAAO,MAAM,CAAC;QAChB,KAAK,uDAAuD;YAC1D,OAAO,MAAM,CAAC;QAChB,KAAK,qDAAqD;YACxD,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AA3BD,gDA2BC;AAED,2BAA2B;AAC3B,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,QAAQ,IAAI,EAAE;QACZ,KAAK,IAAI;YACP,OAAO,iEAAiE,CAAC;QAC3E,KAAK,KAAK;YACR,OAAO,iEAAiE,CAAC;QAC3E,KAAK,MAAM;YACT,OAAO,iEAAiE,CAAC;QAC3E,KAAK,KAAK;YACR,OAAO,+DAA+D,CAAC;QACzE,KAAK,MAAM;YACT,OAAO,+DAA+D,CAAC;QACzE,KAAK,MAAM;YACT,OAAO,+DAA+D,CAAC;QACzE,KAAK,MAAM;YACT,OAAO,6DAA6D,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,6DAA6D,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,2DAA2D,CAAC;QACrE,KAAK,MAAM;YACT,OAAO,yDAAyD,CAAC;QACnE,KAAK,MAAM;YACT,OAAO,uDAAuD,CAAC;QACjE,KAAK,KAAK;YACR,OAAO,gDAAgD,CAAC;QAC1D,KAAK,IAAI;YACP,OAAO,+CAA+C,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,+DAA+D,CAAC;QACzE,KAAK,OAAO;YACV,OAAO,6DAA6D,CAAC;QACvE,KAAK,KAAK;YACR,OAAO,2DAA2D,CAAC;QACrE,KAAK,IAAI;YACP,OAAO,iEAAiE,CAAC;QAC3E,KAAK,IAAI;YACP,OAAO,+DAA+D,CAAC;QACzE,KAAK,KAAK;YACR,OAAO,+DAA+D,CAAC;QACzE,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E,KAAK,KAAK;YACR,OAAO,8DAA8D,CAAC;QACxE,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AArDD,gDAqDC"}
package/kifUtil.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import { Square } from './types';
2
- export declare function parseKifSquare(str: string): Square | undefined;
3
- export declare function kifDestSquare(sq: Square): string;
4
- export declare function kifOrigSquare(sq: Square): string;
5
- export declare function toKanjiDigit(str: string): string;
6
- export declare function numberToKanji(n: number): string;
7
- export declare function fromKanjiDigit(str: string): number;
8
- export declare function kanjiToNumber(str: string): number;
9
- export declare function normalizedKifLines(kif: string): string[];
package/kifUtil.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"kifUtil.js","sourceRoot":"","sources":["src/kifUtil.ts"],"names":[],"mappings":"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"}
package/san.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import { Move } from './types';
2
- import { Position } from './shogi';
3
- export declare function makeSanAndPlay(pos: Position, move: Move): string;
4
- export declare function makeSanVariation(pos: Position, variation: Move[]): string;
5
- export declare function makeSan(pos: Position, move: Move): string;
6
- export declare function parseSan(pos: Position, san: string): Move | undefined;
package/san.js DELETED
@@ -1,135 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseSan = exports.makeSan = exports.makeSanVariation = exports.makeSanAndPlay = void 0;
4
- const types_1 = require("./types");
5
- const util_1 = require("./util");
6
- const squareSet_1 = require("./squareSet");
7
- const compat_1 = require("./compat");
8
- function makeSanWithoutSuffix(pos, move) {
9
- let san = '';
10
- if (types_1.isDrop(move)) {
11
- san = compat_1.roleToLishogiChar(move.role).toUpperCase() + '*' + compat_1.shogiCoordToChessCord(util_1.makeSquare(move.to));
12
- }
13
- else {
14
- const role = pos.board.getRole(move.from);
15
- if (!role)
16
- return '--';
17
- const capture = pos.board.occupied.has(move.to);
18
- san = compat_1.roleToLishogiChar(role).toUpperCase();
19
- if (role !== 'pawn' && role !== 'lance' && role !== 'king') {
20
- // Disambiguation
21
- let others = squareSet_1.SquareSet.empty();
22
- for (const s of pos.board.pieces(pos.turn, role)) {
23
- if (pos.dests(s).has(move.to))
24
- others = others.union(squareSet_1.SquareSet.fromSquare(s));
25
- }
26
- others = others.without(move.from);
27
- if (others.nonEmpty()) {
28
- san += compat_1.shogiCoordToChessCord(util_1.makeSquare(move.from));
29
- }
30
- }
31
- if (capture)
32
- san += 'x';
33
- san += compat_1.shogiCoordToChessCord(util_1.makeSquare(move.to));
34
- if (move.promotion)
35
- san += '+';
36
- // Do we need to force promotion?
37
- else if ((role === 'knight' && squareSet_1.SquareSet.backrank2(pos.turn).has(move.to)) ||
38
- ((role === 'pawn' || role === 'lance') && squareSet_1.SquareSet.backrank(pos.turn).has(move.to)))
39
- san += '+';
40
- else if (types_1.PROMOTABLE_ROLES.includes(role) &&
41
- squareSet_1.SquareSet.promotionZone(pos.turn).has(move.to))
42
- san += '=';
43
- }
44
- return san;
45
- }
46
- function makeSanAndPlay(pos, move) {
47
- const san = makeSanWithoutSuffix(pos, move);
48
- pos.play(move);
49
- return san;
50
- }
51
- exports.makeSanAndPlay = makeSanAndPlay;
52
- function makeSanVariation(pos, variation) {
53
- var _a;
54
- pos = pos.clone();
55
- const line = [];
56
- for (let i = 0; i < variation.length; i++) {
57
- if (i !== 0)
58
- line.push(' ');
59
- line.push(pos.fullmoves, '. ');
60
- const san = makeSanWithoutSuffix(pos, variation[i]);
61
- pos.play(variation[i]);
62
- line.push(san);
63
- if (san === '--')
64
- return line.join('');
65
- if (i === variation.length - 1 && ((_a = pos.outcome()) === null || _a === void 0 ? void 0 : _a.winner))
66
- line.push('投了');
67
- }
68
- return line.join('');
69
- }
70
- exports.makeSanVariation = makeSanVariation;
71
- function makeSan(pos, move) {
72
- return makeSanAndPlay(pos.clone(), move);
73
- }
74
- exports.makeSan = makeSan;
75
- function parseSan(pos, san) {
76
- const ctx = pos.ctx();
77
- // Normal move
78
- const match = san.match(/^([PLNSGKBRTUMAHD])([a-i][1-9])?[x]?([a-i][1-9])(\+|\=)?$/);
79
- if (!match) {
80
- // Drop
81
- const match = san.match(/^([PLNSGBRplsgbr])\*([a-i][1-9])$/);
82
- if (!match)
83
- return;
84
- const move = {
85
- role: compat_1.lishogiCharToRole(match[1]),
86
- to: compat_1.parseChessSquare(match[2]),
87
- };
88
- return pos.isLegal(move, ctx) ? move : undefined;
89
- }
90
- const role = compat_1.lishogiCharToRole(match[1]);
91
- const to = compat_1.parseChessSquare(match[3]);
92
- const fromStr = match[2];
93
- let candidates = pos.board.pieces(pos.turn, role);
94
- if (fromStr)
95
- candidates = candidates.intersect(squareSet_1.SquareSet.fromSquare(compat_1.parseChessSquare(fromStr)));
96
- // Check uniqueness and legality
97
- let from;
98
- for (const candidate of candidates) {
99
- if (pos.dests(candidate, ctx).has(to)) {
100
- if (util_1.defined(from))
101
- return; // Ambiguous
102
- from = candidate;
103
- }
104
- }
105
- if (!util_1.defined(from))
106
- return; // Illegal
107
- const promotionStr = match[4];
108
- let promotion;
109
- if (promotionStr === '+')
110
- promotion = true;
111
- else
112
- promotion = false;
113
- // Promotion needs to be specified in san
114
- if (!util_1.defined(promotionStr) &&
115
- types_1.PROMOTABLE_ROLES.includes(role) &&
116
- (squareSet_1.SquareSet.promotionZone(pos.turn).has(to) || squareSet_1.SquareSet.promotionZone(pos.turn).has(from)))
117
- return;
118
- // role can't be promoted/unpromoted or it isn't in/from the promotion zone
119
- if (promotionStr &&
120
- (!types_1.PROMOTABLE_ROLES.includes(role) ||
121
- (!squareSet_1.SquareSet.promotionZone(pos.turn).has(to) && !squareSet_1.SquareSet.promotionZone(pos.turn).has(from))))
122
- return;
123
- // force promotion
124
- else if (!promotion &&
125
- (((role === 'pawn' || role === 'lance') && squareSet_1.SquareSet.backrank(pos.turn).has(to)) ||
126
- (role === 'knight' && squareSet_1.SquareSet.backrank2(pos.turn).has(to))))
127
- return;
128
- return {
129
- from,
130
- to,
131
- promotion,
132
- };
133
- }
134
- exports.parseSan = parseSan;
135
- //# sourceMappingURL=san.js.map
package/san.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"san.js","sourceRoot":"","sources":["src/san.ts"],"names":[],"mappings":"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"}