gpt4 book ai didi

python - 如何更改此代码以检查输入的单词是否会与另一个单词(填字游戏)相交?

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:34 26 4
gpt4 key购买 nike

所以我有两个函数的代码。第一个打印一个空的 20x20 板,第二个打印中间的一个字。现在我正在尝试编写一个函数来检查输入的单词是否会与同一字母的另一个单词(如填字游戏)相交。这是前两个函数的代码(此处无需更改即可工作):

blank = ' '
board = [[' '] * 20 for i in range(20)]
def printboard(board):
columns = '01234567890123456789'
rows = '_' * 20
print(' ' + columns)
print(' ' + rows)
for i in range(20):
s = ''.join(board[i])
print('|' + s +'|' + str(i))
print(' ' + rows)
print(' ' + columns)

def addFirstWord(board, word):
n = len(word)
if n > 20:
return False
row = 10
col = (20 - n) // 2
board[row][col:col+n] = word
return True
addFirstWord(board, 'hippopotamus')

这是我到目前为止尝试过的方法,但它只检查第一个位置和第一个字母等。

def checkvertical(board, word, row, col):
n = len(word)
if n > 20: #checks if word is larger than board
return False
for i in range (len(word)):
if board[row+i][col] == word[i]:
return True
else:
return False
print(checkvertical(board, 'horse', 10, 15))
printboard(board)

我想要的是一个函数,用于检查垂直打印的单词在从特定行和列开始向下打印时是否会与板上的现有单词正确相交。

最佳答案

这应该有效:

def checkvertical(board, word, row, col):
intersects = False
n = len(word)
if n > 20: #checks if word is larger than board
return False
for i, c in enumerate(word):
if board[row+i][col] not in [' ', word[i]]:
return False
elif board[row+i][col] == word[i]:
intersects = True
return intersects

给予:

>>> print(checkvertical(board, 'horse', 7, 14))
False
>>> print(checkvertical(board, 'horse', 7, 15))
True
>>> print(checkvertical(board, 'horse', 10, 4))
True

基本上,我们使用 enumerate 遍历单词并检查我们要放置那 block 的地方是否包含相同的字母或空白。如果我们从未找到属于这种情况的地方,我们将返回 True。

关于python - 如何更改此代码以检查输入的单词是否会与另一个单词(填字游戏)相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58976325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com