我有一个任务,我们必须在单词搜索中找到单词(减去对角线)。你知道吗
M L G Y J U G D T W W I S F P
G Y O H I K O P V F J B J J H
N B I M T M Y W R D J E C A I
I Y M X C U E U Z G U I J Y C
K D P S L R W J I N C N S W T
O P S D I D A B Z I D G D A B
M X D H K E B H U G T S I L G
S G D U Y R V D G N D M L K M
S P X K T W E F P I G E J I T
B U L B C M K I F S I L F N W
Z Q L X H G C J N D I L B G C
M T B W Z L A D A A X Y O K X
A E C Z K F Y V F B U V G A W
Y G O Z E A W J R N S Q J E A
L O I T E R I N G H F I P G R
这是作为文本文件提供的15x15
单词搜索。我们必须从列表中找出搜索范围内的犯罪词:
["JAYWALKING", "BURGLARY", "LAUNDERING", "BADSINGING", "REDRUM", "SMOKING", "BEINGSMELLY","CONNING", "SCAMS", "LOITERING"]
我已经通过了单词搜索,并确定需要找到的单词有:redrum、badsinging、beingsome、jaywalking和loidring。你知道吗
然而,在我的代码中,每个方向只能得到一个结果:闲逛和乱穿马路。我希望有人能给我一些建议,如何使它充分发挥作用。你知道吗
def crossword():
empty_list = []
crimes = ["JAYWALKING", "BURGLARY", "LAUNDERING", "BADSINGING", "REDRUM", "SMOKING", "BEINGSMELLY",
"CONNING", "SCAMS", "LOITERING"]
confession = open("confession.txt", "r")
for line in confession:
line = line.strip("\n")
new_list = line.split(' ')
empty_list.append(new_list)
#horizontal
words = []
for i in range(len(empty_list)):
string_1 = ""
string_2 = ""
m = len(empty_list[i])
for j in range(len(empty_list[i])):
string_1 = string_1 + empty_list[i][j]
string_2 = string_2 + empty_list[i][m-1-j]
for k in range(len(crimes)):
if crimes[k] in string_1 or crimes[k] in string_2:
words.append(crimes[k])
#vertical
for i in range(len(empty_list)):
string_1 = ""
string_2 = ""
m = len(empty_list[i])
for j in range(len(empty_list[i])):
string_1 = string_1 + empty_list[j][i]
string_2 = string_2 + empty_list[j][m-1-i]
for k in range(len(crimes)):
if crimes[k] in string_1 or crimes[k] in string_2:
words.append(crimes[k])
return words
print("Gentleman GoGo is guilty of:")
print(crossword())
这段代码没有经过优化(当然可以用更高性能、更高阶的方式来完成),但是请看一下https://repl.it/repls/DependentBubblyAssignment
我认为一个非常清晰且对初学者友好的方法是创建第二个列表,将列重新排序为行,然后以与行中相同的方式搜索列中的匹配项。你知道吗
详细信息复制代码:
crime in row or crime in row[::-1]
-检查在ltr或rtl中是否存在crime
verticals = ['' for char in slist[0]]
-创建一个由与第一行长度相对应的空字符串填充的列表(由于前面的line.split(' ')
,不包括空格)verticals[col] += slist[row][col]
-从位于row
的col
的原始字符串中获取char,并将其附加到当前的垂直col
索引对于示例数据,它可以找到
['LOITERING', 'SMOKING', 'REDRUM', 'BADSINGING', 'BEINGSMELLY', 'JAYWALKING']
相关问题 更多 >
编程相关推荐