最初我有一个wordsearch拼图,我的目标是在给定之前的单词列表中找到其中的单词。我能够成功找到水平和垂直线条中的单词,但我找不到对角线。
我的主要想法是接受我输入的字母然后加入一个大字符串,然后在这个字符串中搜索单词,返回单词所属的行,之后我只检查它的起始位置,等等。
对于我的对角线,我的计划是一样的,但是让我们说这是我的意见:
c l i o a
e a g b e
a r t l s
j i a u a
e e q u b
e u g r r
c i d e p
b i o s b
2
cat
big
一旦我在联合列表中转换对角线,这就是我得到的:
# first diagonal
first_diag = ['b', 'ci', 'eio', 'euds', 'jegeb', 'aiqrp', 'eraur', 'catub', 'lgla', 'ibs', 'oe', 'a']
# second diagonal
sec_diag = ['c', 'le', 'iaa', 'ogrj', 'abtie', 'elaee', 'suquc', 'augib', 'brdi', 'reo', 'ps', 'b']
从那以后,我会在原来的谜题中占据"cat"
这个词在行(0)和列(0)中。单词"big"
[8] [0]也是如此。
预期产出:
c . . . .
. a . . .
. . t . .
. . . . .
. . . . .
. . g . .
. i . . .
b . . . .
我该怎么做,还是有其他办法呢? tnx提前。
编辑:如果需要,我可以发布我的代码。
答案 0 :(得分:1)
首先,我将对角线的行/列值存储在四个数组中。 比方说,你的矩阵有nr行和nc列,然后是
first_diag_r = [max(nr - 1 - i, 0) for i, _ in enumerate(first_diag)]
和
first_diag_c = [min(i, nc - 1) for i, _ in enumerate(first_diag)]
因此对于second_diag。
现在,如果你在那里找到一个单词,它不在上面两个例子的对角线字符串的开头,那么必须计算这个偏移量: 对于first_diag,这意味着将偏移量添加到列值并从行值中减去偏移量。