返回在对角列表中转换的原始矩阵的索引 - Python 3

时间:2018-05-18 21:34:26

标签: python python-3.x matrix diagonal

最初我有一个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提前。

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

1 个答案:

答案 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,这意味着将偏移量添加到列值并从行值中减去偏移量。