Python Word搜索解算器

时间:2016-02-28 19:06:26

标签: python multidimensional-array

我只是不知道从哪里开始。我已经得到了下面的问题,我真的被卡住了。我非常感谢任何帮助。我的编码尝试如下所示。感谢。

“编写一个接受二维字符列表和一个字符串(单词)作为输入参数的函数。该函数搜索2d列表的行以找到该单词的匹配。如果找到匹配,则为函数返回一个列表,其中包含匹配开头的行索引和列索引,否则返回值None(无引号)。

characters=[['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']]
word='cat'

function(crosswords,word)

然后你的函数应该返回[2,1]。

请注意,2d输入列表代表2d填字游戏,水平单词'cat'的起始索引为[2,1]

5 个答案:

答案 0 :(得分:1)

有趣的任务......我在Python中处于相当初级的水平,所以如果你还没有解决问题,我可以解决你的一半问题。

def function(crosswords, word):

for row in crosswords:
    join_list = "".join(row)
    if join_list.find(word) != -1:
        return [crosswords.index(row), row.index(word[0])]
else:
    return False

字符数= [[' S'' d'' O'' G&#39],[' C& #39;,' U'' C'' M'],[' A'' C' ' A'' T&#39],[' T'' E'' T'&# 39; K']] 字='猫' 打印(功能(字符,单词))

如果在数组中找到该字,则返回TRUE,否则返回FALSE。您需要更换'返回True'并且'返回False'以及你需要返回的东西。

编辑:我制定了一个解决方案,它完成了工作;虽然这可能不是最好的方法。可能还有改进的余地。

答案 1 :(得分:0)

def find_word_horizo​​ntal(填字游戏,单词):

list1=[]
row_index = -1
column_index = -1
refind=''
for row in crosswords:
    index=''
    for column in row:
        index= index+column
    list1.append(index)

for find_word in list1:
    if word in find_word:
       row_index = list1.index(find_word)
       refind = find_word
       column_index = find_word.index(word)


ret = [row_index,column_index]
if row_index!= -1 and column_index != -1:
    return ret

纵横字谜= [[ 'S', 'd', '0', 'G'],[ 'C', 'U', 'C', 'M'],[ 'A', 'c' 的, 'A', 'T'],[ 'T', 'E', 'T', 'K']] 字=“猫” 打印(find_word_horizo​​ntal(纵横字谜,字))

答案 2 :(得分:0)

嗨,如何垂直而不是水平地找到单词呢? - 该函数搜索2d列表的行以查找该单词的匹配项。

答案 3 :(得分:0)

def find_word_horizontal(crosswords,word):
    if not crosswords or not word:
        return None    
    number_of_rows=len(crosswords)
    for row_index in range (number_of_rows):
        temp_str=''
        for col_index in range(len(crosswords[0])):
            temp_str=temp_str+crosswords[row_index][col_index]
        if temp_str.find(word)>=0:
            return [row_index,temp_str.find(word)]
    return None

答案 4 :(得分:0)

def find_word_horizontal(crosswords,word):
    if not crosswords or not word : # if empty then return None
        return None
    for index,row in enumerate(crosswords):
        temp_str=''.join(row)
        if temp_str.find(word)>=0:
            return [index,temp_str.find(word)]
    return None