在Python文字搜索技术中,按对角线搜索,打印出单词开始和结束的位置的结果

2024-10-08 19:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个朋友教我学习Python,他给了我一个项目,在这个项目中,用户将把一个单词搜索读入程序中,文件中包括一个单词列表,这些单词将出现在单词搜索中。我要搜索这些单词,有些单词是对角的。如果我找到了这个单词,我必须打印单词开始和结束的行和列(坐标)。我只学了2个星期的Python,所以我很困惑,我该如何对角搜索一个单词并得到单词的起点和终点呢?下面是搜索单词的示例。我已经完成了,花了3天的时间,但没有任何结果。在

单词搜索

HGAMONIHRA
AOMOKAWONS
NFROLBOBDN
ARFSIHCAGE
LNIEEWONOK
GOLFUNDTHC
KOCATAOHBI
AMRERCGANH
SLGFAMALLC
ALLIGATORX

要搜索的单词

^{pr2}$

Tags: 文件项目用户程序示例列表时间朋友
1条回答
网友
1楼 · 发布于 2024-10-08 19:31:02

这更像是一个蛮力问题,但是有更有效的技术可供使用,但是请记住,你是这个领域的新手,我不建议你专注于算法部分,所以首先我们将创建一个名为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

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

相关问题 更多 >

    热门问题