Skip to content

Commit ceb5d5f

Browse files
committed
Fix Korean Janggi notation: no separators, differentiate Han/Cho kings
- Remove parentheses/spaces: 02(馬)83 → 02馬83 - King now side-specific: 將 (Han/White) vs 帥 (Cho/Black) - Soldier already was side-specific: 兵 (Han) vs 卒 (Cho)
1 parent 9879f2f commit ceb5d5f

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

src/apiutil.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ inline std::string piece_to_dobutsu_kanji(PieceType pt, bool promoted) {
206206

207207
inline std::string piece_to_janggi_korean_char(Piece pc, Color c) {
208208
switch (type_of(pc)) {
209-
case KING: return "\u5c07"; //
209+
case KING: return c == WHITE ? "\u5c07" : "\u5e2b"; // (Han) / 帥 (Cho)
210210
case ROOK: return "\u8eca"; //
211211
case JANGGI_CANNON: return "\u5305"; //
212212
case HORSE: return "\u99ac"; //
@@ -524,12 +524,10 @@ inline const std::string move_to_san(Position& pos, Move m, Notation n, Square l
524524

525525
if (is_janggi_korean(n))
526526
{
527-
// Korean: source(piece)destination
527+
// Korean: source piecedestination
528528
d = disambiguation_level(pos, m, n);
529529
san += disambiguation(pos, from, n, d);
530-
san += "(";
531530
san += piece(pos, m, n);
532-
san += ")";
533531
}
534532
else if (n == NOTATION_SHOGI_JAPANESE)
535533
{

test.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,21 +1050,28 @@ def test_get_san(self):
10501050
result = sf.get_san("janggi", JANGGI, "b1c3", False, sf.NOTATION_JANGGI)
10511051
self.assertEqual(result, "H02-83")
10521052

1053-
# Korean Janggi notation
1053+
# Korean Janggi notation - Han (White) uses 將, Cho (Black) uses 帥
10541054
result = sf.get_san("janggi", JANGGI, "b1c3", False, sf.NOTATION_JANGGI_KOREAN)
1055-
self.assertEqual(result, "02(\u99ac)83")
1055+
self.assertEqual(result, "02\u99ac83") # 02馬83
10561056

10571057
result = sf.get_san("janggi", JANGGI, "e2e3", False, sf.NOTATION_JANGGI_KOREAN)
1058-
self.assertEqual(result, "95(\u5c07)85")
1058+
self.assertEqual(result, "95\u5c0785") # 95將85 (Han general)
10591059

10601060
result = sf.get_san("janggi", JANGGI, "a1a2", False, sf.NOTATION_JANGGI_KOREAN)
1061-
self.assertEqual(result, "01(\u8eca)91")
1061+
self.assertEqual(result, "01\u8eca91") # 01車91
10621062

10631063
result = sf.get_san("janggi", JANGGI, "a4a5", False, sf.NOTATION_JANGGI_KOREAN)
1064-
self.assertEqual(result, "71(\u5175)61")
1064+
self.assertEqual(result, "71\u517561") # 71兵61
10651065

10661066
result = sf.get_san("janggi", JANGGI, "e4e5", False, sf.NOTATION_JANGGI_KOREAN)
1067-
self.assertEqual(result, "75(\u5175)65")
1067+
self.assertEqual(result, "75\u517565") # 75兵65
1068+
1069+
# Korean Janggi notation - Cho (Black) king uses 帥
1070+
fen = sf.get_fen("janggi", JANGGI, ["e2e3"], False, False)
1071+
result = sf.get_san("janggi", fen, "e9e8", False, sf.NOTATION_JANGGI_KOREAN)
1072+
self.assertEqual(result, "25\u5e2b35") # 25帥35 (Cho commander)
1073+
result = sf.get_san("janggi", fen, "a7a6", False, sf.NOTATION_JANGGI_KOREAN)
1074+
self.assertEqual(result, "41\u535251") # 41卒51 (Cho pawn)
10681075

10691076
fen = "1b1aa2b1/5k3/3ncn3/1pp1pp3/5r2p/9/P1PPB1PPB/2N1CCN1c/9/R2AKAR2 w - - 19 17"
10701077
result = sf.get_san("janggi", fen, "d1e2", False, sf.NOTATION_SAN)

0 commit comments

Comments
 (0)