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/squareSet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"squareSet.js","sourceRoot":"","sources":["src/squareSet.ts"],"names":[],"mappings":";;;AAEA,SAAS,QAAQ,CAAC,CAAS;IACzB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAW,CAAC,CAAC;IAClC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,SAAW,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAW,EAAE,QAAW,CAAC,IAAI,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IACrE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IACrE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,GAAG,UAAU,CAAC;AACxB,CAAC;AAED,MAAa,SAAS;IACpB,YAAqB,EAAU,EAAW,GAAW,EAAW,EAAU;QAArD,OAAE,GAAF,EAAE,CAAQ;QAAW,QAAG,GAAH,GAAG,CAAQ;QAAW,OAAE,GAAF,EAAE,CAAQ;QACxE,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,OAAO,MAAM,IAAI,EAAE;YACjB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,MAAM,IAAI,EAAE;gBACd,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,YAAY;QACZ,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAY;QAC/B,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAY;QAC1B,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAY;QAC3B,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACzG,CAAC;IAED,UAAU;QACR,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,GAAG,CAAC,KAAgB;QAClB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,KAAgB;QACpB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,SAAS,CAAC,KAAgB;QACxB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,KAAgB;QACnB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,KAAgB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,KAAK,IAAI,EAAE;YACb,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7G,IAAI,KAAK,GAAG,CAAC;YACX,OAAO,IAAI,SAAS,CAClB,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAChD,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAChD,IAAI,CAAC,EAAE,KAAK,KAAK,CAClB,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,KAAK,IAAI,EAAE;YACb,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5G,IAAI,KAAK,GAAG,CAAC;YACX,OAAO,IAAI,SAAS,CAClB,IAAI,CAAC,EAAE,IAAI,KAAK,EAChB,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAChD,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CACjD,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QACpC,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,OAAO,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;IAChF,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,EAAW;QAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,WAAW;QACT,OAAO,CACL,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/B,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YACjC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC1C,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,GAAG,CAAC;SACX;QACD,OAAO,GAAG,KAAK,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;YAChB,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;QACD,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC1C,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;IACH,CAAC;IAED,CAAC,QAAQ;QACP,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACpC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;QACD,OAAO,GAAG,KAAK,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;YAChB,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;QACD,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACpC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,GAAG,CAAC;SACX;IACH,CAAC;CACF;AA7QD,8BA6QC"}
|
|
1
|
+
{"version":3,"file":"squareSet.js","sourceRoot":"","sources":["src/squareSet.ts"],"names":[],"mappings":";;;AAEA,SAAS,QAAQ,CAAC,CAAS;IACzB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAW,CAAC,CAAC;IAClC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,SAAW,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAW,EAAE,QAAW,CAAC,IAAI,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IACrE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IACrE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,GAAG,UAAU,CAAC;AACxB,CAAC;AAED,MAAa,SAAS;IACpB,YAAqB,EAAU,EAAW,GAAW,EAAW,EAAU;QAArD,OAAE,GAAF,EAAE,CAAQ;QAAW,QAAG,GAAH,GAAG,CAAQ;QAAW,OAAE,GAAF,EAAE,CAAQ;QACxE,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,OAAO,MAAM,IAAI,EAAE;YACjB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,MAAM,IAAI,EAAE;gBACd,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,GAAG,CAAC,KAAgB;QAClB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,KAAgB;QACpB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,SAAS,CAAC,KAAgB;QACxB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,KAAgB;QACnB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,KAAgB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,KAAK,IAAI,EAAE;YACb,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7G,IAAI,KAAK,GAAG,CAAC;YACX,OAAO,IAAI,SAAS,CAClB,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAChD,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAChD,IAAI,CAAC,EAAE,KAAK,KAAK,CAClB,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,KAAK,IAAI,EAAE;YACb,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5G,IAAI,KAAK,GAAG,CAAC;YACX,OAAO,IAAI,SAAS,CAClB,IAAI,CAAC,EAAE,IAAI,KAAK,EAChB,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAChD,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CACjD,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QACpC,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,OAAO,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;IAChF,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,EAAW;QAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,WAAW;QACT,OAAO,CACL,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/B,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YACjC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC1C,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,GAAG,CAAC;SACX;QACD,OAAO,GAAG,KAAK,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;YAChB,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;QACD,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC1C,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;IACH,CAAC;IAED,CAAC,QAAQ;QACP,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACpC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;QACD,OAAO,GAAG,KAAK,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;YAChB,MAAM,EAAE,GAAG,GAAG,CAAC;SAChB;QACD,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACpC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,GAAG,CAAC;SACX;IACH,CAAC;CACF;AA5PD,8BA4PC"}
|
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,
|
|
2
|
-
import { defined, makeSquare,
|
|
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
|
|
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 =>
|
|
33
|
-
result.set(
|
|
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?:
|
|
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 =>
|
|
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 =>
|
|
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
|
|
69
|
-
|
|
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
|
|
89
|
-
|
|
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
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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 {
|
|
3
|
+
import { Setup } from './setup';
|
|
4
4
|
import { Position } from './shogi';
|
|
5
|
-
import { Color, isDrop, Move
|
|
6
|
-
import { csaToRole, defined,
|
|
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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
31
|
+
makeCsaHand(setup.hands.sente, 'P+'),
|
|
32
|
+
makeCsaHand(setup.hands.gote, 'P-'),
|
|
29
33
|
setup.turn === 'gote' ? '-' : '+',
|
|
30
|
-
]
|
|
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
|
|
52
|
-
if (
|
|
57
|
+
export function makeCsaHand(hand: Hand, prefix: string): string {
|
|
58
|
+
if (hand.isEmpty()) return '';
|
|
53
59
|
return (
|
|
54
60
|
prefix +
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
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 (!(
|
|
137
|
-
|
|
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])
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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 = {
|
|
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
|
}
|