Return 转换为对角线列表的原始矩阵的索引 - Python 3

Return index of original matrix that was transformed in a diagonal list - Python 3

最初我有一个单词搜索难题,我的目标是在给定先前的单词列表的情况下找到其中的单词。我能够成功地找到水平和垂直线中的单词,但我无法找到对角线。

我的主要想法是把我输入的字母加入一个大字符串,然后在这个字符串中搜索单词,返回单词所属的行,然后我只检查它从哪里开始, 等等。

对于我的对角线,我的计划是一样的,但假设这是我的输入:

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.

编辑:如果需要,我可以post我的代码。

起初我将 row-/column- 对角字符串的值存储在四个数组中。 比方说,你的矩阵有 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 这意味着将偏移量添加到列值并从行值中减去偏移量。