如何在填字游戏中垂直查找单词

问题描述 投票:0回答:7

我正在尝试编写一个接受二维 (2D) 字符列表(如填字游戏)和字符串作为输入参数的函数,然后该函数必须搜索二维列表的列以找到匹配项这个单词。如果找到匹配项,则该函数应返回一个列表,其中包含匹配项开始的行索引和列索引,否则应返回值 None。

例如,如果函数调用如下所示:

crosswords = [['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']]
word = 'cat'
find_word_vertical(crosswords,word)

然后函数应该返回:

[1,0]
python-3.4
7个回答
1
投票
def find_word_vertical(crosswords,word):

    columns = []
    finished = []
    for col in range(len(crosswords[0])):
        columns.append( [crosswords[row][col] for row in  
        range(len(crosswords))])

    for a in range(0, len(crosswords)):
        column = [crosswords[x][a] for x in range(len(crosswords))]
        finished.append(column)

    for row in finished:
        r=finished.index(row)
        whole_row = ''.join(row)
        found_at = whole_row.find(word)
        if found_at >=0:
            return([found_at, r])

0
投票

这个是用来寻找水平方向的……切换这个有帮助吗?

def find_word_horizontal(crosswords, word):

    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

0
投票

简单的版本是:

def find_word_vertical(crosswords,word):
    z=[list(i) for i in zip(*crosswords)]   
    for rows in z:          
        row_index = z.index(rows)
        single_row = ''.join(rows)      
        column_index = single_row.find(word)        
        if column_index >= 0:
            return([column_index, row_index])

这给出了正确的输出 [1,0]


0
投票

垂直查找单词:

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

0
投票

横向查找单词:

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

0
投票
#find vertical word in 2d

def find_it(li,wo): out_list=[]

for row in range(len(li)):
    print(row)
    chek_word=""
    for item in range(len(li)):
        chek_word=chek_word + li[item][row]
    print(chek_word)
    if wo in chek_word:
        print(chek_word.find(wo))
        out_list=[ chek_word.find(wo) , row]
        print(out_list)
        break

这是我的,是的,它有效


0
投票

def find_word_vertical(填字游戏,单词): 如果不是填字游戏或不是单词: 返回无
number_of_columns = len(填字游戏[0]) 对于范围内的 col_index (number_of_columns): temp_str='' 对于范围内的 row_index(len(填字游戏)): temp_str=temp_str+crosswords[row_index][col_index] 如果 temp_str.find(word)>=0: 返回 [temp_str.find(word),col_index] 返回无

© www.soinside.com 2019 - 2024. All rights reserved.