Возвращаемый индекс исходной матрицы, которая была преобразована в диагональный список - Python 3 - PullRequest
0 голосов
/ 19 мая 2018

Изначально у меня есть головоломка поиска слов, и моя цель - найти слова в ней, используя предыдущий список слов.Мне удалось найти слова по горизонтали и вертикали, но у меня возникли проблемы с поиском диагоналей.

Моя главная идея - взять введенные мной буквы и соединить их в одну большую строку изатем найдите слово в этой строке, вернув строку, которой принадлежит слово, и после этого я просто проверяю, где оно начинается, и так далее.

Для моих диагоналей я планировал то же самое, но допустим, это мой ввод:

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 заранее.

edit: При необходимости я могу опубликовать свой код.

1 Ответ

0 голосов
/ 19 мая 2018

Сначала я буду хранить значения строк / столбцов диагональных строк в четырех массивах.Скажем, ваша матрица имеет 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 это означает добавление смещения к значению столбца и вычитание смещения из значения строки.

...