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/attacks.js CHANGED
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.between = exports.ray = exports.attacks = exports.dragonAttacks = exports.horseAttacks = exports.lanceAttacks = exports.rookAttacks = exports.bishopAttacks = exports.pawnAttacks = exports.goldAttacks = exports.silverAttacks = exports.knightAttacks = exports.kingAttacks = void 0;
4
- const util_1 = require("./util");
5
- const squareSet_1 = require("./squareSet");
1
+ import { squareFile, squareRank } from './util';
2
+ import { SquareSet } from './squareSet';
6
3
  function computeRange(square, deltas) {
7
- let range = squareSet_1.SquareSet.empty();
4
+ let range = SquareSet.empty();
8
5
  for (const delta of deltas) {
9
6
  const sq = square + delta;
10
- if (0 <= sq && sq < 81 && Math.abs(util_1.squareFile(square) - util_1.squareFile(sq)) <= 2) {
7
+ if (0 <= sq && sq < 81 && Math.abs(squareFile(square) - squareFile(sq)) <= 2) {
11
8
  range = range.with(sq);
12
9
  }
13
10
  }
@@ -36,38 +33,33 @@ const GOLD_ATTACKS = {
36
33
  sente: tabulate(sq => computeRange(sq, [-9, -1, 1, 8, 9, 10])),
37
34
  gote: tabulate(sq => computeRange(sq, [-10, -9, -8, -1, 1, 9])),
38
35
  };
39
- function kingAttacks(square) {
36
+ export function kingAttacks(square) {
40
37
  return KING_ATTACKS[square];
41
38
  }
42
- exports.kingAttacks = kingAttacks;
43
- function knightAttacks(color, square) {
39
+ export function knightAttacks(color, square) {
44
40
  return KNIGHT_ATTACKS[color][square];
45
41
  }
46
- exports.knightAttacks = knightAttacks;
47
- function silverAttacks(color, square) {
42
+ export function silverAttacks(color, square) {
48
43
  return SILVER_ATTACKS[color][square];
49
44
  }
50
- exports.silverAttacks = silverAttacks;
51
- function goldAttacks(color, square) {
45
+ export function goldAttacks(color, square) {
52
46
  return GOLD_ATTACKS[color][square];
53
47
  }
54
- exports.goldAttacks = goldAttacks;
55
- function pawnAttacks(color, square) {
48
+ export function pawnAttacks(color, square) {
56
49
  return PAWN_ATTACKS[color][square];
57
50
  }
58
- exports.pawnAttacks = pawnAttacks;
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));
51
+ const FILE_RANGE = tabulate(sq => SquareSet.fromFile(squareFile(sq)).without(sq));
52
+ const RANK_RANGE = tabulate(sq => SquareSet.fromRank(squareRank(sq)).without(sq));
53
+ const FORW_RANGE = tabulate(sq => SquareSet.forwardRanks(squareRank(sq)).without(sq));
54
+ const BACK_RANGE = tabulate(sq => SquareSet.backwardRanks(squareRank(sq)).without(sq));
63
55
  const DIAG_RANGE = tabulate(sq => {
64
- const diag = new squareSet_1.SquareSet(0x100401, 0x802008, 0x4010040);
65
- const shift = 9 * (util_1.squareRank(sq) - util_1.squareFile(sq));
56
+ const diag = new SquareSet(0x100401, 0x802008, 0x4010040);
57
+ const shift = 9 * (squareRank(sq) - squareFile(sq));
66
58
  return (shift >= 0 ? diag.shl81(shift) : diag.shr81(-shift)).without(sq);
67
59
  });
68
60
  const ANTI_DIAG_RANGE = tabulate(sq => {
69
- const diag = new squareSet_1.SquareSet(0x1010100, 0x202020, 0x40404);
70
- const shift = 9 * (util_1.squareRank(sq) + util_1.squareFile(sq) - 8);
61
+ const diag = new SquareSet(0x1010100, 0x202020, 0x40404);
62
+ const shift = 9 * (squareRank(sq) + squareFile(sq) - 8);
71
63
  return (shift >= 0 ? diag.shl81(shift) : diag.shr81(-shift)).without(sq);
72
64
  });
73
65
  function hyperbola(bit, range, occupied) {
@@ -78,40 +70,35 @@ function hyperbola(bit, range, occupied) {
78
70
  return forward.xor(reverse.bswap81()).intersect(range);
79
71
  }
80
72
  function fileAttacks(square, occupied) {
81
- return hyperbola(squareSet_1.SquareSet.fromSquare(square), FILE_RANGE[square], occupied);
73
+ return hyperbola(SquareSet.fromSquare(square), FILE_RANGE[square], occupied);
82
74
  }
83
75
  function rankAttacks(square, occupied) {
84
76
  const range = RANK_RANGE[square];
85
77
  let forward = occupied.intersect(range);
86
78
  let reverse = forward.rbit81();
87
- forward = forward.minus81(squareSet_1.SquareSet.fromSquare(square));
88
- reverse = reverse.minus81(squareSet_1.SquareSet.fromSquare(80 - square));
79
+ forward = forward.minus81(SquareSet.fromSquare(square));
80
+ reverse = reverse.minus81(SquareSet.fromSquare(80 - square));
89
81
  return forward.xor(reverse.rbit81()).intersect(range);
90
82
  }
91
- function bishopAttacks(square, occupied) {
92
- const bit = squareSet_1.SquareSet.fromSquare(square);
83
+ export function bishopAttacks(square, occupied) {
84
+ const bit = SquareSet.fromSquare(square);
93
85
  return hyperbola(bit, DIAG_RANGE[square], occupied).xor(hyperbola(bit, ANTI_DIAG_RANGE[square], occupied));
94
86
  }
95
- exports.bishopAttacks = bishopAttacks;
96
- function rookAttacks(square, occupied) {
87
+ export function rookAttacks(square, occupied) {
97
88
  return fileAttacks(square, occupied).xor(rankAttacks(square, occupied));
98
89
  }
99
- exports.rookAttacks = rookAttacks;
100
- function lanceAttacks(color, square, occupied) {
90
+ export function lanceAttacks(color, square, occupied) {
101
91
  return color === 'sente'
102
92
  ? fileAttacks(square, occupied).intersect(FORW_RANGE[square])
103
93
  : fileAttacks(square, occupied).intersect(BACK_RANGE[square]);
104
94
  }
105
- exports.lanceAttacks = lanceAttacks;
106
- function horseAttacks(square, occupied) {
95
+ export function horseAttacks(square, occupied) {
107
96
  return bishopAttacks(square, occupied).union(kingAttacks(square));
108
97
  }
109
- exports.horseAttacks = horseAttacks;
110
- function dragonAttacks(square, occupied) {
98
+ export function dragonAttacks(square, occupied) {
111
99
  return rookAttacks(square, occupied).union(kingAttacks(square));
112
100
  }
113
- exports.dragonAttacks = dragonAttacks;
114
- function attacks(piece, square, occupied) {
101
+ export function attacks(piece, square, occupied) {
115
102
  switch (piece.role) {
116
103
  case 'pawn':
117
104
  return pawnAttacks(piece.color, square);
@@ -139,9 +126,8 @@ function attacks(piece, square, occupied) {
139
126
  return kingAttacks(square);
140
127
  }
141
128
  }
142
- exports.attacks = attacks;
143
- function ray(a, b) {
144
- const other = squareSet_1.SquareSet.fromSquare(b);
129
+ export function ray(a, b) {
130
+ const other = SquareSet.fromSquare(b);
145
131
  if (RANK_RANGE[a].intersects(other))
146
132
  return RANK_RANGE[a].with(a);
147
133
  if (ANTI_DIAG_RANGE[a].intersects(other))
@@ -150,13 +136,11 @@ function ray(a, b) {
150
136
  return DIAG_RANGE[a].with(a);
151
137
  if (FILE_RANGE[a].intersects(other))
152
138
  return FILE_RANGE[a].with(a);
153
- return squareSet_1.SquareSet.empty();
139
+ return SquareSet.empty();
154
140
  }
155
- exports.ray = ray;
156
- function between(a, b) {
141
+ export function between(a, b) {
157
142
  return ray(a, b)
158
- .intersect(squareSet_1.SquareSet.full().shl81(a).xor(squareSet_1.SquareSet.full().shl81(b)))
143
+ .intersect(SquareSet.full().shl81(a).xor(SquareSet.full().shl81(b)))
159
144
  .withoutFirst();
160
145
  }
161
- exports.between = between;
162
146
  //# sourceMappingURL=attacks.js.map
package/attacks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"attacks.js","sourceRoot":"","sources":["src/attacks.ts"],"names":[],"mappings":"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"}
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
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Board = void 0;
4
- const types_1 = require("./types");
5
- const squareSet_1 = require("./squareSet");
6
- class Board {
1
+ import { COLORS, ROLES } from './types';
2
+ import { SquareSet } from './squareSet';
3
+ export class Board {
7
4
  constructor() { }
8
5
  static default() {
9
6
  const board = new Board();
@@ -11,23 +8,48 @@ class Board {
11
8
  return board;
12
9
  }
13
10
  reset() {
14
- this.occupied = new squareSet_1.SquareSet(0x7fd05ff, 0x0, 0x7fd05ff);
15
- this.sente = new squareSet_1.SquareSet(0x7fd05ff, 0x0, 0x0);
16
- this.gote = new squareSet_1.SquareSet(0x0, 0x0, 0x7fd05ff);
17
- this.pawn = new squareSet_1.SquareSet(0x7fc0000, 0x0, 0x1ff);
18
- this.lance = new squareSet_1.SquareSet(0x101, 0x0, 0x4040000);
19
- this.knight = new squareSet_1.SquareSet(0x82, 0x0, 0x2080000);
20
- this.silver = new squareSet_1.SquareSet(0x44, 0x0, 0x1100000);
21
- this.gold = new squareSet_1.SquareSet(0x28, 0x0, 0xa00000);
22
- this.bishop = new squareSet_1.SquareSet(0x400, 0x0, 0x10000);
23
- this.rook = new squareSet_1.SquareSet(0x10000, 0x0, 0x400);
24
- this.king = new squareSet_1.SquareSet(0x10, 0x0, 0x400000);
25
- this.tokin = squareSet_1.SquareSet.empty();
26
- this.promotedlance = squareSet_1.SquareSet.empty();
27
- this.promotedknight = squareSet_1.SquareSet.empty();
28
- this.promotedsilver = squareSet_1.SquareSet.empty();
29
- this.horse = squareSet_1.SquareSet.empty();
30
- this.dragon = squareSet_1.SquareSet.empty();
11
+ this.numberOfFiles = 9;
12
+ this.numberOfRanks = 9;
13
+ this.occupied = new SquareSet(0x7fd05ff, 0x0, 0x7fd05ff);
14
+ this.sente = new SquareSet(0x7fd05ff, 0x0, 0x0);
15
+ this.gote = new SquareSet(0x0, 0x0, 0x7fd05ff);
16
+ this.pawn = new SquareSet(0x7fc0000, 0x0, 0x1ff);
17
+ this.lance = new SquareSet(0x101, 0x0, 0x4040000);
18
+ this.knight = new SquareSet(0x82, 0x0, 0x2080000);
19
+ this.silver = new SquareSet(0x44, 0x0, 0x1100000);
20
+ this.gold = new SquareSet(0x28, 0x0, 0xa00000);
21
+ this.bishop = new SquareSet(0x400, 0x0, 0x10000);
22
+ this.rook = new SquareSet(0x10000, 0x0, 0x400);
23
+ this.king = new SquareSet(0x10, 0x0, 0x400000);
24
+ this.tokin = SquareSet.empty();
25
+ this.promotedlance = SquareSet.empty();
26
+ this.promotedknight = SquareSet.empty();
27
+ this.promotedsilver = SquareSet.empty();
28
+ this.horse = SquareSet.empty();
29
+ this.dragon = SquareSet.empty();
30
+ }
31
+ static minishogi() {
32
+ const board = new Board();
33
+ board.numberOfFiles = 5;
34
+ board.numberOfRanks = 5;
35
+ board.occupied = new SquareSet(0x0, 0x43e000, 0x7c20000);
36
+ board.sente = new SquareSet(0x0, 0x43e000, 0x0);
37
+ board.gote = new SquareSet(0x0, 0x0, 0x7c20000);
38
+ board.pawn = new SquareSet(0x0, 0x400000, 0x20000);
39
+ board.lance = new SquareSet(0x0, 0x0, 0x0);
40
+ board.knight = new SquareSet(0x0, 0x0, 0x0);
41
+ board.silver = new SquareSet(0x0, 0x8000, 0x1000000);
42
+ board.gold = new SquareSet(0x0, 0x4000, 0x2000000);
43
+ board.bishop = new SquareSet(0x0, 0x10000, 0x800000);
44
+ board.rook = new SquareSet(0x0, 0x20000, 0x400000);
45
+ board.tokin = new SquareSet(0x0, 0, 0);
46
+ board.promotedlance = new SquareSet(0x0, 0x0, 0x0);
47
+ board.promotedknight = new SquareSet(0x0, 0x0, 0x0);
48
+ board.promotedsilver = new SquareSet(0x0, 0x0, 0x0);
49
+ board.horse = new SquareSet(0x0, 0x0, 0x0);
50
+ board.dragon = new SquareSet(0x0, 0x0, 0x0);
51
+ board.king = new SquareSet(0x0, 0x2000, 0x4000000);
52
+ return board;
31
53
  }
32
54
  static empty() {
33
55
  const board = new Board();
@@ -35,25 +57,31 @@ class Board {
35
57
  return board;
36
58
  }
37
59
  clear() {
38
- this.occupied = squareSet_1.SquareSet.empty();
39
- for (const color of types_1.COLORS)
40
- this[color] = squareSet_1.SquareSet.empty();
41
- for (const role of types_1.ROLES)
42
- this[role] = squareSet_1.SquareSet.empty();
60
+ this.numberOfFiles = 9;
61
+ this.numberOfRanks = 9;
62
+ this.occupied = SquareSet.empty();
63
+ for (const color of COLORS)
64
+ this[color] = SquareSet.empty();
65
+ for (const role of ROLES)
66
+ this[role] = SquareSet.empty();
43
67
  }
44
68
  clone() {
45
69
  const board = new Board();
46
70
  board.occupied = this.occupied;
47
- for (const color of types_1.COLORS)
71
+ board.numberOfFiles = this.numberOfFiles;
72
+ board.numberOfRanks = this.numberOfRanks;
73
+ for (const color of COLORS)
48
74
  board[color] = this[color];
49
- for (const role of types_1.ROLES)
75
+ for (const role of ROLES)
50
76
  board[role] = this[role];
51
77
  return board;
52
78
  }
53
79
  equals(other) {
54
80
  if (!this.gote.equals(other.gote))
55
81
  return false;
56
- return types_1.ROLES.every(role => this[role].equals(other[role]));
82
+ if (this.numberOfFiles !== other.numberOfFiles || this.numberOfRanks !== other.numberOfRanks)
83
+ return false;
84
+ return ROLES.every(role => this[role].equals(other[role]));
57
85
  }
58
86
  getColor(square) {
59
87
  if (this.sente.has(square))
@@ -63,7 +91,7 @@ class Board {
63
91
  return;
64
92
  }
65
93
  getRole(square) {
66
- for (const role of types_1.ROLES) {
94
+ for (const role of ROLES) {
67
95
  if (this[role].has(square))
68
96
  return role;
69
97
  }
@@ -107,5 +135,4 @@ class Board {
107
135
  return this.king.intersect(this[color]).singleSquare();
108
136
  }
109
137
  }
110
- exports.Board = Board;
111
138
  //# sourceMappingURL=board.js.map
package/board.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"board.js","sourceRoot":"","sources":["src/board.ts"],"names":[],"mappings":"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"}
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, Square, Role, PocketRole } from './types';
1
+ import { Rules, SquareName, Move, Role } from './types';
2
2
  import { Position } from './shogi';
3
- export declare const C_FILE_NAMES: readonly ["a", "b", "c", "d", "e", "f", "g", "h", "i"];
4
- export declare type ChessFileName = typeof C_FILE_NAMES[number];
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 shogigroundMove(move: Move): ChessSquareName[];
15
- export declare function lishogiVariantRules(variant: 'standard' | 'fromPosition'): Rules;
16
- export declare function chessCoordToShogiCoord(s: ChessSquareName): SquareName;
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 usiToSquareNames(usi: string): SquareName[];
7
+ export declare function moveToSquareNames(move: Move): SquareName[];
8
+ export declare function lishogiVariantRules(variant: string): Rules;
package/compat.js CHANGED
@@ -1,42 +1,22 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assureLishogiUci = exports.assureUsi = exports.makeLishogiUci = exports.parseLishogiUci = exports.lishogiCharToRole = exports.roleToLishogiChar = exports.shogiCoord = exports.chessCoord = exports.shogiCoordToChessCord = exports.chessCoordToShogiCoord = exports.lishogiVariantRules = exports.shogigroundMove = exports.scalashogiCharPair = exports.shogigroundDropDests = exports.shogigroundDests = exports.parseChessSquare = exports.makeChessSquare = exports.C_RANK_NAMES = exports.C_FILE_NAMES = void 0;
4
- const types_1 = require("./types");
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[util_1.squareFile(square)] + exports.C_RANK_NAMES[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
- function shogigroundDests(pos) {
1
+ import { isDrop } from './types';
2
+ import { defined, makeSquare, parseUsi } from './util';
3
+ export function shogigroundDests(pos) {
23
4
  const result = new Map();
24
5
  const ctx = pos.ctx();
25
6
  for (const [from, squares] of pos.allDests(ctx)) {
26
7
  if (squares.nonEmpty()) {
27
- const d = Array.from(squares, s => makeChessSquare(s));
28
- result.set(makeChessSquare(from), d);
8
+ const d = Array.from(squares, s => makeSquare(s));
9
+ result.set(makeSquare(from), d);
29
10
  }
30
11
  }
31
12
  return result;
32
13
  }
33
- exports.shogigroundDests = shogigroundDests;
34
- function shogigroundDropDests(pos, role) {
14
+ export function shogigroundDropDests(pos, role) {
35
15
  const result = new Map();
36
16
  if (role) {
37
17
  const squares = pos.dropDests(role);
38
18
  if (squares.nonEmpty()) {
39
- const d = Array.from(squares, s => makeChessSquare(s));
19
+ const d = Array.from(squares, s => makeSquare(s));
40
20
  result.set(role, d);
41
21
  }
42
22
  }
@@ -44,177 +24,32 @@ function shogigroundDropDests(pos, role) {
44
24
  const ctx = pos.ctx();
45
25
  for (const [r, squares] of pos.allDropDests(ctx)) {
46
26
  if (squares.nonEmpty()) {
47
- const d = Array.from(squares, s => makeChessSquare(s));
27
+ const d = Array.from(squares, s => makeSquare(s));
48
28
  result.set(r, d);
49
29
  }
50
30
  }
51
31
  }
52
32
  return result;
53
33
  }
54
- exports.shogigroundDropDests = shogigroundDropDests;
55
- function scalashogiCharPair(move) {
56
- if (types_1.isDrop(move))
34
+ export function scalashogiCharPair(move) {
35
+ if (isDrop(move))
57
36
  return String.fromCharCode(34 + move.to, 34 + 81 + 128 + ['rook', 'bishop', 'knight', 'pawn', 'gold', 'silver', 'lance'].indexOf(move.role));
58
37
  else
59
38
  return String.fromCharCode(34 + move.from, move.promotion ? 34 + move.to + 128 : 34 + move.to);
60
39
  }
61
- exports.scalashogiCharPair = scalashogiCharPair;
62
- function shogigroundMove(move) {
63
- return types_1.isDrop(move) ? [makeChessSquare(move.to)] : [makeChessSquare(move.from), makeChessSquare(move.to)];
64
- }
65
- exports.shogigroundMove = shogigroundMove;
66
- function lishogiVariantRules(variant) {
67
- switch (variant) {
68
- case 'standard':
69
- case 'fromPosition':
70
- return 'shogi';
71
- }
72
- }
73
- exports.lishogiVariantRules = lishogiVariantRules;
74
- function chessCoordToShogiCoord(s) {
75
- return util_1.makeSquare(parseChessSquare(s));
76
- }
77
- exports.chessCoordToShogiCoord = chessCoordToShogiCoord;
78
- function shogiCoordToChessCord(s) {
79
- return makeChessSquare(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;
40
+ export function usiToSquareNames(usi) {
41
+ const move = parseUsi(usi);
42
+ return defined(move) ? moveToSquareNames(move) : [];
97
43
  }
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
- }
44
+ export function moveToSquareNames(move) {
45
+ return isDrop(move) ? [makeSquare(move.to)] : [makeSquare(move.from), makeSquare(move.to)];
130
46
  }
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';
47
+ export function lishogiVariantRules(variant) {
48
+ switch (variant) {
49
+ case 'minishogi':
50
+ return 'minishogi';
176
51
  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 (util_1.defined(role) && 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 (util_1.defined(from) && util_1.defined(to))
193
- return { from, to, promotion };
52
+ return 'shogi';
194
53
  }
195
- return;
196
- }
197
- exports.parseLishogiUci = parseLishogiUci;
198
- function makeLishogiUci(move) {
199
- if (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 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(util_1.parseUsi(str));
217
- return;
218
54
  }
219
- exports.assureLishogiUci = assureLishogiUci;
220
55
  //# sourceMappingURL=compat.js.map