【发布时间】:2021-08-27 06:11:36
【问题描述】:
我是编程新手,最近开始学习 Python。在练习使用 Loop 和解决八皇后谜题时,我很难找到检查对角线攻击的方法。我希望你能帮助我解决对角线模式。谢谢!
这是我到目前为止所写的:
A = []
for I in range(0,8):
A.append([0,0,0,0,0,0,0,0])
for I in range(1,8):
Valid = False
while not Valid:
S = input('Enter position'+ str(I) +' : ')
X = int(S[0])-1
Y = int(S[2])-1
Valid = True
for J in range(1,8):
if A[X][J] > 0:
Valid = False
if A[J][Y] > 0:
Valid = False
if not Valid:
print('Invalid Position!')
else:
A[X][Y] = 1
print(A)
【问题讨论】:
-
我不知道国际象棋谜题,所以我不能真正告诉你要做什么,但我想建议对于棋盘,你可以使用 (8,8) NumPy 数组的嵌套列表。它更简洁一些,因为它具有固定的形状和尺寸,而列表可以以您不希望的方式进行更改。它看起来会有些不同,你创建一个像
A = numpy.zeros((8, 8), dtype = numpy.int8),你索引像A[X, Y]。int8是可能的最小数据类型,取值范围为 -128 到 127。对于 6 种类型的棋子来说绰绰有余,而 +/- 可以指示哪一边。 -
好像是单人棋局,没有发现敌人的移动,那么,你想从哪里检测对角线攻击呢?
-
@Ghost Ops 是的,先生。一个玩家占据了整个 8x8 棋盘。目标是在它们无法互相攻击的情况下放置尽可能多的蜂王。
-
@BatWanneBe 感谢您的评论。我还没有学过 NumPy,但我一定会研究一下。
标签: python