我正在尝试建立一个m*n Tic-Tac-Toe使用numpy来保持我的游戏状态。为了计算一个胜算,我们需要一个元素的至少'q'连续块在行、列或对角线上。(如果是原始的井字游戏,则为3)。在
我目前实施的一个粗略的方法是沿着对角线路径生成所有行、列和向量,然后使用迭代法对其中的每一个进行迭代,找到一个连续的“q”块。在
我想进一步优化它。因为,我对使用矩阵处理numpy和计算比较陌生,所以我想知道我们是否可以用更好的方式来做,更具体地说,我是否能够更好地利用numpy功能来完成更多这些计算。在
Tags:
可以使用切片而不是生成。numpy数组可以这样索引(请参见https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html):
您可以使用
^{pr2}$==
检查numpy数组的所有元素,这将生成一个答案数组。在更好的优化:你只需要检查放置最后一块的线条,假设你在每次移动后都会检查。你只需要检查最后一个玩家的棋子(X或O)。在
假设1属于Player1,2属于player2,0表示空白。然后,对于数组中的每一行/每列/每一条对角线,你都可以算出1和2的计数,如果它等于行的长度,那么就意味着一个玩家已经赢了。这里使用^{} 我对数组中的每一行/列/对角线都应用了一个函数,它返回该行中1或2的计数除以该行的长度,因此如果在任何情况下返回1,则意味着行/列/对角线包含所有1或2
演示:
演示:
^{pr2}$相关问题 更多 >
编程相关推荐