python - 有没有办法将 python 棋盘转换为整数列表?
问题描述
我正在尝试创建一个神经网络来下棋,但首先,我需要将棋盘转换为整数列表。我正在为棋盘和游戏使用python-chess模块。我目前有一个棋盘类,但找不到将其转换为列表的方法。
我曾尝试使用该chess_board.epd()
方法,但它返回的格式方案难以转换。
这是我需要的代码:
board = chess.Board() # Define board object
board.convert_to_int() # Method I need
现在,用.epd()
我得到的方法"rnbqkbnr/pppppppp/8/8/8/5P2/PPPPP1PP/RNBQKBNR b KQkq -"
如您所见,解析和转换为整数列表非常困难,因为有/8/
' 和/5P2/
.
预期的输出是这样的(逐行):
[4, 2, 3, 5, 6, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, ... -1, -1, -1, -1,-1, -1,-1, -1, -4, -2, -3, -5, -6, -3, -2, -4]
例如,这些可以是整数映射到 peices 的内容:
pawn - 1
knight - 2
bishop - 3
rook - 4
queen - 5
king - 6
白色可以是正整数,黑色可以是负整数。
解决方案
这是另一个版本,使用 unicode() 方法:
def convert_to_int(board):
indices = '♚♛♜♝♞♟⭘♙♘♗♖♕♔'
unicode = board.unicode()
return [
[indices.index(c)-6 for c in row.split()]
for row in unicode.split('\n')
]
推荐阅读
- javascript - 如何从日期选择器在katalon中设置日期
- ios - 您如何确定用户是否存在 Firebase Auth Swift IOS
- javascript - THREE.js - CameraContros 和 camera.up 向量
- ios - 如何更改状态栏样式 - iOS 12
- arrays - 打字稿:另一个数组的对象数组(Angular6)
- python - 如果我调用不同文件的函数,则导入相同的 python 模块
- javascript - 如果在对象中发现重复名称,如何迭代对象数组以添加计数器值
- c++ - 多线程练习
- apache-spark - 不基于分区的 Apache Spark Dataframe 列的累积总和
- android - 如何在我的#Kotlin 应用程序中更改不同时间的 BackgroungResource?