在Python单词搜索中,对角搜索,打印单词开始和结束的结果

时间:2015-01-30 17:46:30

标签: python search

我有一位朋友在学习Python时辅导我,他给了我这个项目,用户将在该程序中读取单词搜索,该文件包含将在单词搜索中的单词列表。我必须搜索这些单词和一些对角运行的单词。如果我找到了这个单词,我必须在哪一行打印,单词的哪一列(坐标)开始,单词结束。我只是在学习Python 2周,所以我很困惑,我如何对角搜索一个单词并得到一个单词的起点和终点?示例单词搜索位于下方,搜索单词位于其下方。我已经完成了它并花了3天时间就没有了。

单词搜索

HGAMONIHRA
AOMOKAWONS
NFROLBOBDN
ARFSIHCAGE
LNIEEWONOK
GOLFUNDTHC
KOCATAOHBI
AMRERCGANH
SLGFAMALLC
ALLIGATORX

要搜索的字词

CAT
DOG
ALLIGATOR
CHICKEN
FROG

1 个答案:

答案 0 :(得分:0)

这更像是一个暴力问题,但是有更多有效的技术可用,但请记住,你是这个领域的新手,我不建议你专注于算法部分,所以首先我们会创建一个名为search_diagonal的函数,它将带有3个参数starting_pointmeshlength_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

然而,需要处理许多异常情况,例如索引超出范围等,但这必须让您大致了解如何解决此问题。