Нахождение слова в матрице - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть файл матрицы (который python читает как список списков), и мне нужно сказать, появляется ли слово из другого файла в этой матрице в заданном направлении.например: с учетом этой матрицы:

c,a,T,e
o,a,t,s
w,o,t,e
n,o,l,e

слова:

caT, cow, own, cat

и направления:

downright (diagonal)

Я ожидаю вывод:

cat:1

и для направления:

down, right

Я ожидаю:

cow:1
own:1
cat:1

моя функция настроена так:

def word_finder(word_list,matrix, directions):

Что мне трудно сделать, так это просмотреть список списков и просмотреть индексы, например, горизонтальные или диагональные: ( thx для справки

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Попробуйте:

from itertools import chain
from collections import defaultdict

matrix= [['c', 'a', 'T', 'e'],
         ['o', 'a', 't', 's'],
         ['w', 'o', 't', 'e'],
         ['n', 'o', 'l', 'e']]
words = ['caT', 'cow', 'own', 'cat']

d = defaultdict(int)
for i in chain(matrix, list(zip(*matrix))): # list(zip(*matrix)) is for down direction
    for word in words:
        if word in ''.join(i):
            d[word] = d[word] + 1

d будет вашим ожидаемым результатом.{'caT': 1, 'cow': 1, 'own': 1}

0 голосов
/ 18 ноября 2018

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

...