Алгоритм преобразования алгебраических шахматных обозначений в схему доски или обозначение FEN

#java #c# #algorithm #chess

Вопрос:

Я ищу алгоритм, который я могу использовать для преобразования алгебраических шахматных обозначений в матричный формат или обозначение FEN, которое можно запрограммировать на C#?

Пример ввода алгебраических обозначений (информация)

 1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Be3 c5 8. Rc1 O-O 9. Qd2 e5 10. d5 Qd6 11. f3 f5 12. Qc2 Nd7 13. Nh3 f4 14. Bd2 Nb6 15. Nf2 c4 16. Be2 Bd7 17. O-O Qc7 18. Rb1 Nc8 19. a4 Rf6 20. Rb4 Nd6 21. Rfb1 g5 22. Qa2 Rc8 23. a5 h5 24. h3 Rg6 25. Kf1 Bf6 26. Bd1 Bd8 27. Ra1 Rb8 28. Be1 b5 29. axb6 axb6 30. Qb1 Qb7 31. Rb2 b5 32. Rba2 Bb6 33. Ra6 Kf7 34. R1a2 Rgg8 35. Qa1 Qc7 36. Be2 Bc8 37. Ra8 Rxa8 38. Rxa8 Qc5 39. Qa3 Bd7 40. Qxc5 Bxc5 41. Ra6 Ke7 42. Nd1 Rb8 43. Bf2 Bxf2 44. Kxf2 g4 45. h4 b4 46. cxb4 Rxb4 47. Ke1 g3 48. Ra8 Bc8 49. Kd2 Rb6 50. Kc2 Rb7 51. Nb2 Rc7 52. Ra4 Bd7 53. Rb4 Ra7 54. Nxc4 Nxc4 55. Bxc4 Ra1 56. Rb6 Rg1 57. Rh6 Rxg2  58. Kc3 Rf2 59. d6  Kf8 60. Rg6 Rxf3  61. Kb4
 

выход должен быть
FEN

 5k2/3b4/3P2R1/4p2p/1KB1Pp1P/5rp1/8/8 b - - 1 61
 

Или

 --  --  --  --  --  bK  --  --
--  --  --  bB  --  --  --  --
--  --  --  wp  --  --  wR  --
--  --  --  --  bp  --  --  bp
--  wK  wB  --  wp  bp  --  wp
--  --  --  --  --  bR  bp  --
--  --  --  --  --  --  --  --
--  --  --  --  --  --  --  --
 

На данный момент я могу преобразовать FEN в надстрочную нотацию, но алгебраическая нотация гораздо сложнее. Я только после окончательной структуры доски, меня не волнует порядок перемещения.

Комментарии:

1. Если я правильно понимаю вопрос, вы хотите преобразовать приведенную выше матрицу в FEN или алгебраическую нотацию? Если это так, то невозможно преобразовать матрицу в алгебраическую.

2. Возможно, вы захотите объяснить (или дать ссылку, которая объясняет), что такое алгебраическая шахматная нотация . Как правило, когда я думаю о сопоставлении , я думаю Dictionary<TKey, TValue> , но я недостаточно знаю о проблемной области, чтобы помочь здесь (я не думаю).

3. спасибо за ответ, @Hayden, я хочу преобразовать другое направление (алгебраическое в FEN). Я также добавил больше информации о нотациях.

4. Я не понимаю, что вы пытаетесь сделать. Алгебраическая нотация используется для описания ходов в игре, в то время как FEN используется для описания позиции в игре. Эти два сервера не выполняют одну и ту же функцию.

5. @kw1jybo, как только вы выполните приказ на перемещение в алгебраической системе счисления, он разместит фигуры на доске определенным образом (что можно описать с помощью FEN). Это то, что я ищу, все позиции фигур на доске после выполнения алгебраической записи. пример dcode.fr/chess-notation