我有一位朋友在学习Python时辅导我,他给了我这个项目,用户将在该程序中读取单词搜索,该文件包含将在单词搜索中的单词列表。我必须搜索这些单词和一些对角运行的单词。如果我找到了这个单词,我必须在哪一行打印,单词的哪一列(坐标)开始,单词结束。我只是在学习Python 2周,所以我很困惑,我如何对角搜索一个单词并得到一个单词的起点和终点?示例单词搜索位于下方,搜索单词位于其下方。我已经完成了它并花了3天时间就没有了。
单词搜索
HGAMONIHRA
AOMOKAWONS
NFROLBOBDN
ARFSIHCAGE
LNIEEWONOK
GOLFUNDTHC
KOCATAOHBI
AMRERCGANH
SLGFAMALLC
ALLIGATORX
要搜索的字词
CAT
DOG
ALLIGATOR
CHICKEN
FROG
答案 0 :(得分:0)
这更像是一个暴力问题,但是有更多有效的技术可用,但请记住,你是这个领域的新手,我不建议你专注于算法部分,所以首先我们会创建一个名为search_diagonal
的函数,它将带有3个参数starting_point
,mesh
,length_of_word
,你可以根据传递的参数在函数中做一些漂亮的东西。
一个你有3个参数,然后可以轻松地沿对角线传播:
MESH = ["HGAMONIHRA", "AOMOKAWONS", "NFROLBOBDN", "ARFSIHCAGE",
"LNIEEWONOK", "GOLFUNDTHC", "KOCATAOHBI", "AMRERCGANH", "SLGFAMALLC",
"ALLIGATORX"]
def search_diagonal(starting_point, MESH, length_of_word):
new_word1 = ""
new_word2 = ""
new_word3 = ""
new_word4 = ""
for i in xrange(length_of_word):
#Propagating in SE direction
new_word1+=MESH[starting_point[0]+i][starting_point[1]+i]
for i in xrange(length_of_word):
#Propagating in NE direction
new_word2+=MESH[starting_point[0]+i][starting_point[1]-i]
for i in xrange(length_of_word):
#Propagating in NW direction
new_word3+=MESH[starting_point[0]-i][starting_point[1]-i]
for i in xrange(length_of_word):
#Propagating in SW direction
new_word4+=MESH[starting_point[0]-i][starting_point[1]+i]
return new_word1, new_word2, new_word3, new_word4
然而,需要处理许多异常情况,例如索引超出范围等,但这必须让您大致了解如何解决此问题。