;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\207" [require chess-message chess-ply chess-pos cl-lib] 2) #@91 Map internal piece representation to Unicode chess figures (as used in figurine notation. (defconst chess-algebraic-figurine-pieces '((75 . 9812) (81 . 9813) (82 . 9814) (66 . 9815) (78 . 9816) (80 . 9817) (107 . 9818) (113 . 9819) (114 . 9820) (98 . 9821) (110 . 9822) (112 . 9823)) (#$ . 207)) #@120 A regular expression that matches all possible algebraic moves. This regexp matches short, long and figurine notation. (defconst chess-algebraic-regexp "\\(\\(?:0-0\\(?:-0\\)?\\|O-O\\(?:-O\\)?\\)\\|\\([BKNQR♔-♘♚-♞]\\)?/?\\([a-h]?[1-8]?\\)\\([x-]\\)?\\([a-h][1-8]\\)\\(=\\([BKNQR♔-♘♚-♞]\\)\\)?\\)\\([#+]\\)?" (#$ . 510)) (defconst chess-algebraic-regexp-entire (concat chess-algebraic-regexp "$")) (defconst chess-algebraic-regexp-ws (concat chess-algebraic-regexp "\\s-")) (chess-message-catalog 'english '((clarify-piece . "Clarify piece to move by rank or file") (could-not-clarify . "Could not determine which piece to use") (could-not-diff . "Could not differentiate piece") (no-candidates . "There are no candidate moves for '%s'") (at-move-string . "At algebraic move '%s': %s"))) #@118 Convert (short, long or figurine) algebraic notation MOVE for POSITION to a ply. (fn POSITION MOVE &optional TRUST) (defalias 'chess-algebraic-to-ply #[770 "\303\304 \"\205\211\305!\205\211G\306U\262\204\"\307\310\311\312E\"\210\211\313H\262\314\315\"\316H\303\211\317U\204<\320U\203M\321\314\322\n\"G\323U\"\262\202\303\314\324\"\314\325 \"\314\323\n\"\211;\204i\307\310\326\327E\"\210\211G\330U\204t\331\332!\210\211\322H\333!\204\205\307\310\334\334E\"\210\324\335ZZ\262\316H\333!\204\235\307\310\334\334E\"\210\211\336Z\262\250\203\263\316Y\203\263\324X\204\273\307\310\337\340E\"\210\211\250\203\314\211\316Y\203\314\211\324X\204\324\307\310\341\342E\"\210\315_\\\266\203\203pG\330U\203p\211;\204\364\307\310\326\327E\"\210\211G\330U\204\377\331\332!\210\211\322H\333!\204\307\310\334\334E\"\210\324\335ZZ\262\316H\333!\204(\307\310\334\334E\"\210\211\336Z\262\250\203>\316Y\203>\324X\204F\307\310\337\340E\"\210\211\250\203W\211\316Y\203W\211\324X\204_\307\310\341\342E\"\210\315_\\\266\203D\343\262\266\202\202\251G\316U\203}\303\262\202\202\316H\262\303\211\204\222\336W\203\222\344\262\345\n\"\203\252\204\241\346\262\345\n\"@\226\262\336W\204\270\262\347\262\350 \f\203\306\n\202\311\n\227\303\351%\211\262\203\234G\322U\203\342@D\266\204\202\251\204\364\352\303\353\354\355#!\266\206\202\251\203\202\336Y\2037@\211\250\203\211\316Y\203\211\356X\204\307\310\357\360E\"\210\361\315\"\262\333!\204.\307\310\334\334E\"\210\211\336Z\262U\202n@\211\250\203J\211\316Y\203J\211\356X\204R\307\310\362\360E\"\210\211\315\245\262\333!\204f\307\310\334\334E\"\210\324\335ZZ\262U\203{@\262\303\262\202\364A\262\202\364\211\204\224\363\303\353\354\355#!\266\206\202\251\211D\266\204\202\251\364\fC\353\354\355#!\266\206\262\211\203\302\365\345\316H\n\"@\206\276\316H\226D\244\210\210\205 \203\336\203\336\366\230\203\332\367\202\333\370C\244\210\211\203\351D\244\210\3711\373\354\372 $0\266\205\202\373\374!D\353\354\355#!\266\202\262\266\205)\207" [case-fold-search chess-algebraic-regexp-entire chess-algebraic-figurine-pieces nil string-match vectorp 75 signal wrong-type-argument chess-pos position 70 match-string 8 0 79 48 chess-ply-castling-changes 1 5 7 3 string coord 2 cl--assertion-failed (= (length coord) 2) natnump character 49 97 (integer 0 7) rank (integer 0 7) file :lan :san rassq :fan 80 chess-search-position t clarify-piece error apply chess-string 63 (integer 0 63) index mod (integer 0 63) could-not-clarify no-candidates :promote "#" :checkmate :check (error) chess-ply-create at-move-string error-message-string] 20 (#$ . 1320)]) #@416 Convert the given PLY to algebraic notation. Optional argument TYPE specifies the kind of algebraic notation to generate. `:san' (the default) generates short (or standard) algebraic notation (like "Nc3"). `:lan' generates long algebraic notation (like "Nb1-c3". `:fan' generates figurine algebraic notation (like "♘c3". Finally, `:numeric' generates ICCF numeric notation (like "2133". (fn PLY &optional TYPE) (defalias 'chess-ply-to-algebraic #[513 "\211\204\301\262\302\"\206?\211\211:\205#\211@\303!\205!\211G\304U\262\262\2040\305\306\307\310E\"\210\211\211\211:\205E\211@\303!\205C\211G\304U\262\262\204R\305\306\307\310E\"\210\211A\262\211<\205d\211@9?\205d\211@\266\202\204k\311\207\312\211\313=\203|\314\315\211\211:\205\214\211@\303!\205\212\211G\304U\262\262\204\231\305\306\307\310E\"\210\211\211\211:\205\256\211@\303!\205\254\211G\304U\262\262\204\273\305\306\307\310E\"\210\211A\262\211<\205\315\211@9?\205\315\211@\266\202\211\250\203\340\211\316Y\203\340\211\317X\204\350\305\306\320\321E\"\210\322\323\"\262\324\\\325\211\211:\205\211@\303!\205\211G\304U\262\262\204\305\306\307\310E\"\210\211\211\211:\205)\211@\303!\205'\211G\304U\262\262\2046\305\306\307\310E\"\210\211A\262\211<\205H\211@9?\205H\211@\266\202\326\"\211\250\203]\211\316Y\203]\211\317X\204e\305\306\327\321E\"\210\211\323\245\262\324\\\211\211:\205\202\211@\303!\205\200\211G\304U\262\262\204\217\305\306\307\310E\"\210\211\211\211:\205\244\211@\303!\205\242\211G\304U\262\262\204\261\305\306\307\310E\"\210\211A\262\211<\205\304\211@9?\205\304\211A@\266\202\211\250\203\327\211\316Y\203\327\211\317X\204\337\305\306\320\321E\"\210\322\323\"\262\324\\\325\n\211\211:\205\376\211@\303!\205\374\211G\304U\262\262\204 \305\306\307\310E\"\210\211\211\211:\205 \211@\303!\205\211G\304U\262\262\204-\305\306\307\310E\"\210\211A\262\211<\205@\211@9?\205@\211A@\266\202\326\"\211\250\203U\211\316Y\203U\211\317X\204]\305\306\327\321E\"\210\211\323\245\262\324\\\302 \330\"\205w\331\302\f\330\"\332\"\324\\C&\206>\302\333\"\203\207\334\202>\302\335\"\203\222\336\202>\211\211:\205\247\211@\303!\205\245\211G\304U\262\262\204\264\305\306\307\310E\"\210\211@\262\211\211:\205\315\211@\303!\205\313\211G\304U\262\262\204\332\305\306\307\310E\"\210\211\211\211:\205\357\211@\303!\205\355\211G\304U\262\262\204\374\305\306\307\310E\"\210\211A\262\211<\205\211@9?\205\211@\266\202\211\211:\205&\211@\303!\205$\211G\304U\262\262\2043\305\306\307\310E\"\210\211\211\211:\205H\211@\303!\205F\211G\304U\262\262\204U\305\306\307\310E\"\210\211A\262\211<\205h\211@9?\205h\211A@\266\202\303!\205w\211G\304U\262\204\204\305\306\337\340E\"\210\211\250\203\225\211\316Y\203\225\211\317X\204\235\305\306\341\321E\"\210H\266\202\316\211\211\250\203\266\211\316Y\203\266\211\317X\204\276\305\306\327\321E\"\210\211\323\245\262\211\250\203\325\211\316Y\203\325\211\317X\204\335\305\306\320\321E\"\210\322\323\"\262\302 \342\"\211\204\311\343 \344\345%\211G\346V\203\310\211\211\203_\211@\211\211\250\203\211\316Y\203\211\317X\204\305\306\327\321E\"\210\211\323\245\262U\203.T\262\211\211\250\203@\211\316Y\203@\211\317X\204H\305\306\320\321E\"\210\322\323\"\262U\203XT\262A\266\202\202\376\210\346U\203\212\211\250\203x\211\316Y\203x\211\347X\204\200\305\306\350\351E\"\210\211\352\\\262\262\202\301\346U\203\266\211\250\203\242\211\316Y\203\242\211\347X\204\252\305\306\353\354E\"\210\347Z\324\\\262\262\202\301\355\344\356\314\357#!\266\312\342#\210\210\226\360U?\205\351\361 \362\267\202\347\226\202\350\236A\202\350\344! \363=\203\217\211\250\203\211\316Y\203\211\317X\204 \305\306\364\321E\"\210\315\211\250\203\211\316Y\203\211\317X\204&\305\306\320\321E\"\210\322\323\"\262\211\250\203=\211\316Y\203=\211\347X\204E\305\306\350\351E\"\210\211\352\\\262\211\250\203\\\211\316Y\203\\\211\317X\204d\305\306\327\321E\"\210\211\323\245\262\211\250\203z\211\316Y\203z\211\347X\204\202\305\306\353\354E\"\210\347Z\324\\\262\"\262\202\361\203\231\361!\202\361 \363=?\205\361\226\360U\205\361\211\250\203\275\211\316Y\203\275\211\317X\204\305\305\306\320\321E\"\210\322\323\"\262U?\205\361\361\211\250\203\343\211\316Y\203\343\211\347X\204\353\305\306\350\351E\"\210\211\352\\\262!\n \303!\205\211G\304U\262\204 \305\306\337\340E\"\210\211\250\203\211\316Y\203\211\317X\204&\305\306\341\321E\"\210H\266\202\365U\2038\302\366\"\203<\367\202D\363=\205D\370 \211\250\203W\211\316Y\203W\211\317X\204_\305\306\364\321E\"\210\315\211\250\203r\211\316Y\203r\211\317X\204z\305\306\320\321E\"\210\322\323\"\262\211\250\203\221\211\316Y\203\221\211\347X\204\231\305\306\350\351E\"\210\211\352\\\262\211\250\203\260\211\316Y\203\260\211\317X\204\270\305\306\327\321E\"\210\211\323\245\262\211\250\203\316\211\316Y\203\316\211\347X\204\326\305\306\353\354E\"\210\347Z\324\\\262\"\262\302\330\"\211\205#\371\361\372=\203 \211\303!\205\377\211G\304U\262\204\f\305\306\337\340E\"\210\211\373H\262\203\202\227\236A\202!!P\262\302\374\"\2031\375\202:\302\376\"\205:\377\260\266\211#\207" [chess-algebraic-figurine-pieces :san chess-ply-keyword vectorp 75 signal wrong-type-argument chess-ply ply "" chess-ply-set-keyword :numeric apply string 0 63 (integer 0 63) index mod 8 49 logxor 56 (integer 0 63) :promote cl-position (81 82 66 78) :castle "O-O" :long-castle "O-O-O" chess-pos position (integer 0 63) :which chess-search-position nil t 1 7 (integer 0 7) file 97 (integer 0 7) rank could-not-diff error chess-string 80 char-to-string #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:san 1241 :lan 1241 :fan 1247)) :lan (integer 0 63) 32 :en-passant "x" "-" "=" :fan 70 :check "+" :checkmate "#"] 27 (#$ . 4098)]) (provide 'chess-algebraic)