Более эффективный способ поиска слова (и его буквенных индексов) по диагонали в массиве (или списке списков) - PullRequest
0 голосов
/ 13 ноября 2018

Я ищу один быстрый способ найти слова в массиве и получить их буквенные индексы. Слова могут быть размещены горизонтально, вертикально, по диагонали, в каждом направлении (слева направо, справа налево, сверху вниз, снизу вверх, снизу слева направо, сверху вниз, слева вверх, сверху вниз, сверху вниз справа вниз). Основная проблема в диагональном измерении ... Как я могу это сделать?

Пример:

Matrix:
   [['CHYD'],
    ['IAOB'],
    ['LGTA'],
    ['EFGE'],
    ['RXBW']]

Words:
   ['CAT',
    'DOG',
    'EGO',
    'RELIC',
    'TOY']

Мне нужно получить словарь с ключами = Rowindex и Value = [набор индексов столбцов букв найденных слов]. В моем примере я найду:

  • 'CAT' в (0,0), (1,1), (2,2)
  • 'СОБАКА' в (0,3), (1,2), (2,1)
  • 'EGO' в (1,2), (2,1), (3,0)
  • 'RELIC' в (0,0), (1,0), (2,0), (3,0), (4,0)
  • «ИГРУШКА» в (0,2), (1,2), (2,2)
  • 'TAC' в (0,0), (1,1), (2,2)

Я хотел бы, чтобы мой окончательный вывод был Found_Word = {0: [0,2,3], 1: [0,1,2], 2: [0,1,2], 3: [0], 4: [0]}

Вы можете мне помочь? Я надеюсь, что я был ясен:)

P.s. Я могу использовать все базовые библиотеки Python (включенные в дистрибутив Anaconda), такие как numpy, colleciotions, itemtools и тому подобное. Я не могу использовать глобальные переменные или классы.

...