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.
Files changed (91) hide show
  1. package/LICENSE.txt +0 -0
  2. package/README.md +0 -0
  3. package/attacks.d.ts +0 -0
  4. package/attacks.js +7 -7
  5. package/attacks.js.map +1 -1
  6. package/board.d.ts +3 -0
  7. package/board.js +31 -0
  8. package/board.js.map +1 -1
  9. package/compat.d.ts +6 -24
  10. package/compat.js +15 -171
  11. package/compat.js.map +1 -1
  12. package/csa.d.ts +4 -3
  13. package/csa.js +38 -33
  14. package/csa.js.map +1 -1
  15. package/csaUtil.d.ts +1 -1
  16. package/csaUtil.js +3 -3
  17. package/csaUtil.js.map +1 -1
  18. package/debug.d.ts +0 -0
  19. package/debug.js +29 -55
  20. package/debug.js.map +1 -1
  21. package/fen.d.ts +6 -5
  22. package/fen.js +53 -49
  23. package/fen.js.map +1 -1
  24. package/hand.d.ts +38 -0
  25. package/hand.js +74 -0
  26. package/hand.js.map +1 -0
  27. package/hash.d.ts +4 -3
  28. package/hash.js +9 -9
  29. package/hash.js.map +1 -1
  30. package/index.d.ts +4 -3
  31. package/index.js +3 -7
  32. package/index.js.map +1 -1
  33. package/kif.d.ts +5 -4
  34. package/kif.js +70 -65
  35. package/kif.js.map +1 -1
  36. package/kifHandicaps.d.ts +0 -0
  37. package/kifHandicaps.js +5 -0
  38. package/kifHandicaps.js.map +1 -1
  39. package/kifUtil.d.ts +0 -0
  40. package/kifUtil.js +4 -4
  41. package/kifUtil.js.map +1 -1
  42. package/package.json +9 -5
  43. package/setup.d.ts +2 -32
  44. package/setup.js +3 -74
  45. package/setup.js.map +1 -1
  46. package/shogi.d.ts +14 -7
  47. package/shogi.js +109 -106
  48. package/shogi.js.map +1 -1
  49. package/squareSet.d.ts +1 -5
  50. package/squareSet.js +0 -13
  51. package/squareSet.js.map +1 -1
  52. package/src/attacks.ts +0 -0
  53. package/src/board.ts +34 -0
  54. package/src/compat.ts +18 -197
  55. package/src/csa.ts +29 -21
  56. package/src/csaUtil.ts +3 -2
  57. package/src/debug.ts +25 -55
  58. package/src/fen.ts +42 -35
  59. package/src/hand.ts +94 -0
  60. package/src/hash.ts +8 -7
  61. package/src/index.ts +5 -5
  62. package/src/kif.ts +51 -43
  63. package/src/kifHandicaps.ts +5 -0
  64. package/src/kifUtil.ts +0 -0
  65. package/src/setup.ts +4 -91
  66. package/src/shogi.ts +75 -75
  67. package/src/squareSet.ts +1 -18
  68. package/src/transform.ts +3 -1
  69. package/src/types.ts +13 -16
  70. package/src/util.ts +2 -68
  71. package/src/variant.ts +44 -3
  72. package/src/variantUtil.ts +160 -0
  73. package/transform.d.ts +0 -0
  74. package/transform.js +3 -1
  75. package/transform.js.map +1 -1
  76. package/types.d.ts +3 -7
  77. package/types.js +13 -14
  78. package/types.js.map +1 -1
  79. package/util.d.ts +1 -4
  80. package/util.js +2 -54
  81. package/util.js.map +1 -1
  82. package/variant.d.ts +12 -1
  83. package/variant.js +38 -3
  84. package/variant.js.map +1 -1
  85. package/variantUtil.d.ts +13 -0
  86. package/variantUtil.js +160 -0
  87. package/variantUtil.js.map +1 -0
  88. package/san.d.ts +0 -6
  89. package/san.js +0 -135
  90. package/san.js.map +0 -1
  91. package/src/san.ts +0 -136
package/squareSet.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"squareSet.js","sourceRoot":"","sources":["src/squareSet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"squareSet.js","sourceRoot":"","sources":["src/squareSet.ts"],"names":[],"mappings":"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"}
package/src/attacks.ts CHANGED
File without changes
package/src/board.ts CHANGED
@@ -2,6 +2,9 @@ import { Square, Color, Role, Piece, COLORS, ROLES } from './types';
2
2
  import { SquareSet } from './squareSet';
3
3
 
4
4
  export class Board implements Iterable<[Square, Piece]> {
5
+ numberOfFiles: number;
6
+ numberOfRanks: number;
7
+
5
8
  occupied: SquareSet;
6
9
 
7
10
  gote: SquareSet;
@@ -31,6 +34,8 @@ export class Board implements Iterable<[Square, Piece]> {
31
34
  }
32
35
 
33
36
  reset(): void {
37
+ this.numberOfFiles = 9;
38
+ this.numberOfRanks = 9;
34
39
  this.occupied = new SquareSet(0x7fd05ff, 0x0, 0x7fd05ff);
35
40
  this.sente = new SquareSet(0x7fd05ff, 0x0, 0x0);
36
41
  this.gote = new SquareSet(0x0, 0x0, 0x7fd05ff);
@@ -50,6 +55,30 @@ export class Board implements Iterable<[Square, Piece]> {
50
55
  this.dragon = SquareSet.empty();
51
56
  }
52
57
 
58
+ static minishogi(): Board {
59
+ const board = new Board();
60
+ board.numberOfFiles = 5;
61
+ board.numberOfRanks = 5;
62
+ board.occupied = new SquareSet(0x0, 0x43e000, 0x7c20000);
63
+ board.sente = new SquareSet(0x0, 0x43e000, 0x0);
64
+ board.gote = new SquareSet(0x0, 0x0, 0x7c20000);
65
+ board.pawn = new SquareSet(0x0, 0x400000, 0x20000);
66
+ board.lance = new SquareSet(0x0, 0x0, 0x0);
67
+ board.knight = new SquareSet(0x0, 0x0, 0x0);
68
+ board.silver = new SquareSet(0x0, 0x8000, 0x1000000);
69
+ board.gold = new SquareSet(0x0, 0x4000, 0x2000000);
70
+ board.bishop = new SquareSet(0x0, 0x10000, 0x800000);
71
+ board.rook = new SquareSet(0x0, 0x20000, 0x400000);
72
+ board.tokin = new SquareSet(0x0, 0, 0);
73
+ board.promotedlance = new SquareSet(0x0, 0x0, 0x0);
74
+ board.promotedknight = new SquareSet(0x0, 0x0, 0x0);
75
+ board.promotedsilver = new SquareSet(0x0, 0x0, 0x0);
76
+ board.horse = new SquareSet(0x0, 0x0, 0x0);
77
+ board.dragon = new SquareSet(0x0, 0x0, 0x0);
78
+ board.king = new SquareSet(0x0, 0x2000, 0x4000000);
79
+ return board;
80
+ }
81
+
53
82
  static empty(): Board {
54
83
  const board = new Board();
55
84
  board.clear();
@@ -57,6 +86,8 @@ export class Board implements Iterable<[Square, Piece]> {
57
86
  }
58
87
 
59
88
  clear(): void {
89
+ this.numberOfFiles = 9;
90
+ this.numberOfRanks = 9;
60
91
  this.occupied = SquareSet.empty();
61
92
  for (const color of COLORS) this[color] = SquareSet.empty();
62
93
  for (const role of ROLES) this[role] = SquareSet.empty();
@@ -65,6 +96,8 @@ export class Board implements Iterable<[Square, Piece]> {
65
96
  clone(): Board {
66
97
  const board = new Board();
67
98
  board.occupied = this.occupied;
99
+ board.numberOfFiles = this.numberOfFiles;
100
+ board.numberOfRanks = this.numberOfRanks;
68
101
  for (const color of COLORS) board[color] = this[color];
69
102
  for (const role of ROLES) board[role] = this[role];
70
103
  return board;
@@ -72,6 +105,7 @@ export class Board implements Iterable<[Square, Piece]> {
72
105
 
73
106
  equals(other: Board): boolean {
74
107
  if (!this.gote.equals(other.gote)) return false;
108
+ if (this.numberOfFiles !== other.numberOfFiles || this.numberOfRanks !== other.numberOfRanks) return false;
75
109
  return ROLES.every(role => this[role].equals(other[role]));
76
110
  }
77
111
 
package/src/compat.ts CHANGED
@@ -1,54 +1,32 @@
1
- import { Rules, SquareName, Move, isDrop, Square, Role, PocketRole } from './types';
2
- import { defined, makeSquare, makeUsi, parseSquare, parseUsi, squareFile, squareRank } from './util';
1
+ import { Rules, SquareName, Move, isDrop, Role } from './types';
2
+ import { defined, makeSquare, parseUsi } from './util';
3
3
  import { Position } from './shogi';
4
4
 
5
- export const C_FILE_NAMES = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] as const;
6
- export type ChessFileName = typeof C_FILE_NAMES[number];
7
-
8
- export const C_RANK_NAMES = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;
9
- export type ChessRankName = typeof C_RANK_NAMES[number];
10
-
11
- export type ChessSquareName = `${ChessFileName}${ChessRankName}`;
12
-
13
- export function makeChessSquare(square: Square): ChessSquareName {
14
- return (C_FILE_NAMES[squareFile(square)] + C_RANK_NAMES[squareRank(square)]) as ChessSquareName;
15
- }
16
-
17
- export function parseChessSquare(str: ChessSquareName): Square;
18
- export function parseChessSquare(str: string): Square | undefined;
19
- export function parseChessSquare(str: string): Square | undefined {
20
- if (str.length !== 2) return;
21
- const file = Math.abs(str.charCodeAt(0) - 'a'.charCodeAt(0));
22
- const rank = Math.abs(str.charCodeAt(1) - '1'.charCodeAt(0));
23
- if (file < 0 || file >= 9 || rank < 0 || rank >= 9) return;
24
- return file + 9 * rank;
25
- }
26
-
27
- export function shogigroundDests(pos: Position): Map<ChessSquareName, ChessSquareName[]> {
5
+ export function shogigroundDests(pos: Position): Map<SquareName, SquareName[]> {
28
6
  const result = new Map();
29
7
  const ctx = pos.ctx();
30
8
  for (const [from, squares] of pos.allDests(ctx)) {
31
9
  if (squares.nonEmpty()) {
32
- const d = Array.from(squares, s => makeChessSquare(s));
33
- result.set(makeChessSquare(from), d);
10
+ const d = Array.from(squares, s => makeSquare(s));
11
+ result.set(makeSquare(from), d);
34
12
  }
35
13
  }
36
14
  return result;
37
15
  }
38
16
 
39
- export function shogigroundDropDests(pos: Position, role?: PocketRole): Map<PocketRole, ChessSquareName[]> {
17
+ export function shogigroundDropDests(pos: Position, role?: Role): Map<Role, SquareName[]> {
40
18
  const result = new Map();
41
19
  if (role) {
42
20
  const squares = pos.dropDests(role);
43
21
  if (squares.nonEmpty()) {
44
- const d = Array.from(squares, s => makeChessSquare(s));
22
+ const d = Array.from(squares, s => makeSquare(s));
45
23
  result.set(role, d);
46
24
  }
47
25
  } else {
48
26
  const ctx = pos.ctx();
49
27
  for (const [r, squares] of pos.allDropDests(ctx)) {
50
28
  if (squares.nonEmpty()) {
51
- const d = Array.from(squares, s => makeChessSquare(s));
29
+ const d = Array.from(squares, s => makeSquare(s));
52
30
  result.set(r, d);
53
31
  }
54
32
  }
@@ -65,177 +43,20 @@ export function scalashogiCharPair(move: Move): string {
65
43
  else return String.fromCharCode(34 + move.from, move.promotion ? 34 + move.to + 128 : 34 + move.to);
66
44
  }
67
45
 
68
- export function shogigroundMove(move: Move): ChessSquareName[] {
69
- return isDrop(move) ? [makeChessSquare(move.to)] : [makeChessSquare(move.from), makeChessSquare(move.to)];
70
- }
71
-
72
- export function lishogiVariantRules(variant: 'standard' | 'fromPosition'): Rules {
73
- switch (variant) {
74
- case 'standard':
75
- case 'fromPosition':
76
- return 'shogi';
77
- }
78
- }
79
-
80
- export function chessCoordToShogiCoord(s: ChessSquareName): SquareName {
81
- return makeSquare(parseChessSquare(s));
82
- }
83
-
84
- export function shogiCoordToChessCord(s: SquareName): ChessSquareName {
85
- return makeChessSquare(parseSquare(s));
46
+ export function usiToShogigroundMove(usi: string): SquareName[] {
47
+ const move = parseUsi(usi);
48
+ return defined(move) ? shogigroundMove(move) : [];
86
49
  }
87
50
 
88
- export function chessCoord(str: string): ChessSquareName | undefined {
89
- if (str.match(/^[1-9][a-i]$/)) return shogiCoordToChessCord(str as SquareName);
90
- if (str.match(/^[a-i][1-9]$/)) return str as ChessSquareName;
91
- return undefined;
51
+ export function shogigroundMove(move: Move): SquareName[] {
52
+ return isDrop(move) ? [makeSquare(move.to)] : [makeSquare(move.from), makeSquare(move.to)];
92
53
  }
93
54
 
94
- export function shogiCoord(str: string): SquareName | undefined {
95
- if (str.match(/^[1-9][a-i]$/)) return str as SquareName;
96
- if (str.match(/^[a-i][1-9]$/)) return chessCoordToShogiCoord(str as ChessSquareName);
97
- else return undefined;
98
- }
99
-
100
- export function roleToLishogiChar(role: Role): string {
101
- switch (role) {
102
- case 'pawn':
103
- return 'p';
104
- case 'lance':
105
- return 'l';
106
- case 'knight':
107
- return 'n';
108
- case 'silver':
109
- return 's';
110
- case 'gold':
111
- return 'g';
112
- case 'bishop':
113
- return 'b';
114
- case 'rook':
115
- return 'r';
116
- case 'tokin':
117
- return 't';
118
- case 'promotedlance':
119
- return 'u';
120
- case 'promotedknight':
121
- return 'm';
122
- case 'promotedsilver':
123
- return 'a';
124
- case 'horse':
125
- return 'h';
126
- case 'dragon':
127
- return 'd';
128
- case 'king':
129
- return 'k';
130
- }
131
- }
132
-
133
- export function lishogiCharToRole(
134
- ch:
135
- | 'p'
136
- | 'l'
137
- | 'n'
138
- | 's'
139
- | 'g'
140
- | 'b'
141
- | 'r'
142
- | 't'
143
- | 'u'
144
- | 'm'
145
- | 'a'
146
- | 'h'
147
- | 'd'
148
- | 'P'
149
- | 'L'
150
- | 'N'
151
- | 'S'
152
- | 'G'
153
- | 'B'
154
- | 'R'
155
- | 'T'
156
- | 'U'
157
- | 'M'
158
- | 'A'
159
- | 'H'
160
- | 'D'
161
- ): Role;
162
- export function lishogiCharToRole(ch: string): Role | undefined;
163
- export function lishogiCharToRole(ch: string): Role | undefined {
164
- switch (ch) {
165
- case 'P':
166
- case 'p':
167
- return 'pawn';
168
- case 'L':
169
- case 'l':
170
- return 'lance';
171
- case 'N':
172
- case 'n':
173
- return 'knight';
174
- case 'S':
175
- case 's':
176
- return 'silver';
177
- case 'G':
178
- case 'g':
179
- return 'gold';
180
- case 'B':
181
- case 'b':
182
- return 'bishop';
183
- case 'R':
184
- case 'r':
185
- return 'rook';
186
- case 'T':
187
- case 't':
188
- return 'tokin';
189
- case 'U':
190
- case 'u':
191
- return 'promotedlance';
192
- case 'M':
193
- case 'm':
194
- return 'promotedknight';
195
- case 'A':
196
- case 'a':
197
- return 'promotedsilver';
198
- case 'H':
199
- case 'h':
200
- return 'horse';
201
- case 'D':
202
- case 'd':
203
- return 'dragon';
204
- case 'K':
205
- case 'k':
206
- return 'king';
55
+ export function lishogiVariantRules(variant: string): Rules {
56
+ switch (variant) {
57
+ case 'minishogi':
58
+ return 'minishogi';
207
59
  default:
208
- return;
209
- }
210
- }
211
-
212
- export function parseLishogiUci(str: string): Move | undefined {
213
- if (str[1] === '*' && str.length === 4) {
214
- const role = lishogiCharToRole(str[0]) as PocketRole;
215
- const to = parseChessSquare(str.slice(2));
216
- if (defined(role) && defined(to)) return { role, to };
217
- } else if (str.length === 4 || str.length === 5) {
218
- const from = parseChessSquare(str.slice(0, 2));
219
- const to = parseChessSquare(str.slice(2, 4));
220
- const promotion = str[4] === '+' ? true : false;
221
- if (defined(from) && defined(to)) return { from, to, promotion };
60
+ return 'shogi';
222
61
  }
223
- return;
224
- }
225
-
226
- export function makeLishogiUci(move: Move): string {
227
- if (isDrop(move)) return `${roleToLishogiChar(move.role).toUpperCase()}*${makeChessSquare(move.to)}`;
228
- return makeChessSquare(move.from) + makeChessSquare(move.to) + (move.promotion ? '+' : '');
229
- }
230
-
231
- export function assureUsi(str: string): string | undefined {
232
- if (str.match(/^([1-9][a-i]|([RBGSNLP]\*))[1-9][a-i](\+|\=)?$/)) return str;
233
- if (str.match(/^([a-i][1-9]|([RBGSNLP]\*))[a-i][1-9](\+|\=)?$/)) return makeUsi(parseLishogiUci(str)!);
234
- return;
235
- }
236
-
237
- export function assureLishogiUci(str: string): string | undefined {
238
- if (str.match(/^([a-i][1-9]|([RBGSNLP]\*))[a-i][1-9](\+|\=)?$/)) return str;
239
- if (str.match(/^([1-9][a-i]|([RBGSNLP]\*))[1-9][a-i](\+|\=)?$/)) return makeLishogiUci(parseUsi(str)!);
240
- return;
241
62
  }
package/src/csa.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  import { Result } from '@badrap/result';
2
2
  import { Board } from './board';
3
- import { Material, MaterialSide, Setup } from './setup';
3
+ import { Setup } from './setup';
4
4
  import { Position } from './shogi';
5
- import { Color, isDrop, Move, PocketRole, POCKET_ROLES } from './types';
6
- import { csaToRole, defined, promote, roleToCsa } from './util';
5
+ import { Color, isDrop, Move } from './types';
6
+ import { csaToRole, defined, roleToCsa } from './util';
7
7
  import { makeCsaSquare, parseCsaSquare } from './csaUtil';
8
+ import { Hand, Hands } from './hand';
9
+ import { allRoles, handRoles, promote } from './variantUtil';
10
+
11
+ // Olny supports standard shogi no variants
8
12
 
9
13
  //
10
14
  // CSA HEADER
@@ -14,7 +18,7 @@ export enum InvalidCsa {
14
18
  CSA = 'ERR_CSA',
15
19
  Board = 'ERR_BOARD',
16
20
  Handicap = 'ERR_HANDICAP',
17
- Pockets = 'ERR_POCKETS',
21
+ Hands = 'ERR_HANDS',
18
22
  AdditionalInfo = 'ERR_ADDITIONAL',
19
23
  }
20
24
 
@@ -24,10 +28,12 @@ export class CsaError extends Error {}
24
28
  export function makeCsaHeader(setup: Setup): string {
25
29
  return [
26
30
  makeCsaBoard(setup.board),
27
- makeCsaPocket(setup.pockets.sente, 'P+'),
28
- makeCsaPocket(setup.pockets.gote, 'P-'),
31
+ makeCsaHand(setup.hands.sente, 'P+'),
32
+ makeCsaHand(setup.hands.gote, 'P-'),
29
33
  setup.turn === 'gote' ? '-' : '+',
30
- ].join('\n');
34
+ ]
35
+ .filter(p => p.length > 0)
36
+ .join('\n');
31
37
  }
32
38
 
33
39
  export function makeCsaBoard(board: Board): string {
@@ -48,15 +54,16 @@ export function makeCsaBoard(board: Board): string {
48
54
  return csaBoard;
49
55
  }
50
56
 
51
- export function makeCsaPocket(material: MaterialSide, prefix: string): string {
52
- if (material.isEmpty()) return '';
57
+ export function makeCsaHand(hand: Hand, prefix: string): string {
58
+ if (hand.isEmpty()) return '';
53
59
  return (
54
60
  prefix +
55
- POCKET_ROLES.map(role => {
56
- const r = roleToCsa(role);
57
- const n = material[role];
58
- return ('00' + r).repeat(Math.min(n, 18));
59
- })
61
+ handRoles('shogi')
62
+ .map(role => {
63
+ const r = roleToCsa(role);
64
+ const n = hand[role];
65
+ return ('00' + r).repeat(Math.min(n, 18));
66
+ })
60
67
  .filter(p => p.length > 0)
61
68
  .join('')
62
69
  );
@@ -73,7 +80,7 @@ export function parseCsaHeader(csa: string): Result<Setup, CsaError> {
73
80
  return baseBoard.chain(board => {
74
81
  const setup = {
75
82
  board: board,
76
- pockets: Material.empty(),
83
+ hands: Hands.empty(),
77
84
  turn: turn,
78
85
  fullmoves: 1,
79
86
  };
@@ -112,7 +119,7 @@ function parseCsaBoard(csaBoard: string[]): Result<Board, CsaError> {
112
119
  else {
113
120
  if (file >= 9 || rank < 0) return Result.err(new CsaError(InvalidCsa.Board));
114
121
  const role = csaToRole(s.substring(1));
115
- if (defined(role)) {
122
+ if (defined(role) && allRoles('shogi').includes(role)) {
116
123
  const square = file + rank * 9;
117
124
  const piece = { role: role, color: (s.startsWith('-') ? 'gote' : 'sente') as Color };
118
125
  board.set(square, piece);
@@ -133,9 +140,8 @@ function parseAdditions(initialSetup: Setup, additions: string[]): Result<Setup,
133
140
  const role = csaToRole(sp.substring(2, 4));
134
141
  if (defined(sq) && defined(role)) {
135
142
  if (sq === 0) {
136
- if (!(POCKET_ROLES as ReadonlyArray<string>).includes(role))
137
- return Result.err(new CsaError(InvalidCsa.Pockets));
138
- initialSetup.pockets[color][role as PocketRole]++;
143
+ if (!handRoles('shogi').includes(role)) return Result.err(new CsaError(InvalidCsa.Hands));
144
+ initialSetup.hands[color][role]++;
139
145
  } else {
140
146
  initialSetup.board.set(sq, { role: role, color: color });
141
147
  }
@@ -164,7 +170,7 @@ export function parseCsaMove(pos: Position, csaMove: string): Move | undefined {
164
170
  const match = csaMove.match(/(?:[\+-])?00([1-9][1-9])(HI|KA|KI|GI|KE|KY|FU)/);
165
171
  if (!match) return;
166
172
  const drop = {
167
- role: csaToRole(match[2]) as PocketRole,
173
+ role: csaToRole(match[2])!,
168
174
  to: parseCsaSquare(match[1])!,
169
175
  };
170
176
  return drop;
@@ -197,7 +203,9 @@ export function makeCsaMove(pos: Position, move: Move): string {
197
203
  } else {
198
204
  const role = pos.board.getRole(move.from);
199
205
  if (!role) return '%ERROR';
200
- return makeCsaSquare(move.from) + makeCsaSquare(move.to) + roleToCsa(move.promotion ? promote(role) : role);
206
+ return (
207
+ makeCsaSquare(move.from) + makeCsaSquare(move.to) + roleToCsa(move.promotion ? promote('shogi')(role) : role)
208
+ );
201
209
  }
202
210
  }
203
211
 
package/src/csaUtil.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { Square, squareFile, squareRank } from '.';
1
+ import { Square } from './types';
2
+ import { squareFile, squareRank } from './util';
2
3
 
3
4
  export function parseCsaSquare(str: string): Square | undefined {
4
5
  if (str.length !== 2) return;
5
- if (str === '00') return 0; // for pocket
6
+ if (str === '00') return 0; // for hand
6
7
  const file = Math.abs(str.charCodeAt(0) - '9'.charCodeAt(0));
7
8
  const rank = Math.abs(str.charCodeAt(1) - '9'.charCodeAt(0));
8
9
  if (file < 0 || file >= 9 || rank < 0 || rank >= 9) return;
package/src/debug.ts CHANGED
@@ -1,9 +1,10 @@
1
- import { Square, Piece, PROMOTABLE_ROLES } from './types';
1
+ import { Square, Piece } from './types';
2
2
  import { makeSquare, makeUsi } from './util';
3
3
  import { makePiece } from './fen';
4
4
  import { SquareSet } from './squareSet';
5
5
  import { Board } from './board';
6
6
  import { Position } from './shogi';
7
+ import { pieceCanPromote, pieceInDeadZone } from './variantUtil';
7
8
 
8
9
  export function squareSet(squares: SquareSet): string {
9
10
  const r = [];
@@ -53,66 +54,35 @@ export function perft(pos: Position, depth: number, log = false): number {
53
54
  const ctx = pos.ctx();
54
55
  const dropDests = pos.allDropDests(ctx);
55
56
 
56
- if (!log && depth === 1 && pos.pockets.isEmpty()) {
57
- // Optimization for leaf nodes.
58
- let nodes = 0;
59
- for (const [from, to] of pos.allDests(ctx)) {
60
- nodes += to.size();
61
- const role = pos.board.getRole(from);
62
- if ((PROMOTABLE_ROLES as ReadonlyArray<string>).includes(role!)) {
63
- const promMoves = SquareSet.promotionZone(pos.turn).has(from)
64
- ? to
65
- : to.intersect(SquareSet.promotionZone(pos.turn));
66
- const forceProm =
67
- role === 'pawn' || role === 'lance'
68
- ? SquareSet.backrank(pos.turn)
69
- : role === 'knight'
70
- ? SquareSet.backrank2(pos.turn)
71
- : SquareSet.empty();
72
- nodes += promMoves.diff(forceProm).size();
73
- }
74
- }
75
- return nodes;
76
- } else {
77
- let nodes = 0;
78
- for (const [from, dests] of pos.allDests(ctx)) {
79
- for (const to of dests) {
80
- const promotions: Array<boolean> = [];
81
- const role = pos.board.get(from)!.role;
82
- const canPromote: boolean =
83
- (PROMOTABLE_ROLES as ReadonlyArray<string>).includes(role!) &&
84
- (SquareSet.promotionZone(pos.turn).has(to) || SquareSet.promotionZone(pos.turn).has(from));
85
- if (canPromote) {
86
- promotions.push(true);
87
- if (
88
- !(
89
- ((role === 'pawn' || role === 'lance') && SquareSet.backrank(pos.turn).has(to)) ||
90
- (role === 'knight' && SquareSet.backrank2(pos.turn).has(to))
91
- )
92
- )
93
- promotions.push(false);
94
- } else promotions.push(false);
57
+ let nodes = 0;
58
+ for (const [from, dests] of pos.allDests(ctx)) {
59
+ for (const to of dests) {
60
+ const promotions: Array<boolean> = [];
61
+ const piece = pos.board.get(from)!;
62
+ if (pieceCanPromote(pos.rules)(piece, from, to)) {
63
+ promotions.push(true);
64
+ if (!pieceInDeadZone(pos.rules)(piece, to)) promotions.push(false);
65
+ } else promotions.push(false);
95
66
 
96
- for (const promotion of promotions) {
97
- const child = pos.clone();
98
- const move = { from, to, promotion };
99
- child.play(move);
100
- const children = perft(child, depth - 1, false);
101
- if (log) console.log(makeUsi(move), children);
102
- nodes += children;
103
- }
104
- }
105
- }
106
- for (const [role, dropDestsOfRole] of dropDests) {
107
- for (const to of dropDestsOfRole) {
67
+ for (const promotion of promotions) {
108
68
  const child = pos.clone();
109
- const move = { role, to };
69
+ const move = { from, to, promotion };
110
70
  child.play(move);
111
71
  const children = perft(child, depth - 1, false);
112
- if (log) console.log(makeUsi(move), children);
72
+ if (log) console.log(makeUsi(move), children, '(', depth, ')');
113
73
  nodes += children;
114
74
  }
115
75
  }
116
- return nodes;
117
76
  }
77
+ for (const [role, dropDestsOfRole] of dropDests) {
78
+ for (const to of dropDestsOfRole) {
79
+ const child = pos.clone();
80
+ const move = { role, to };
81
+ child.play(move);
82
+ const children = perft(child, depth - 1, false);
83
+ if (log) console.log(makeUsi(move), children, '(', depth, ')');
84
+ nodes += children;
85
+ }
86
+ }
87
+ return nodes;
118
88
  }