Проверка строки и столбца на слово в питоне - PullRequest
0 голосов
/ 10 ноября 2009

Я пытаюсь создать программу проверки, чтобы увидеть, находится ли слово в матрице по горизонтали или вертикали. У меня есть код для проверки строки, но будет ли проверка столбца похожа на код строки?

def checkRow(table, r, pos, word):
    for i in range(0, len(word)):
        if table[r][pos+i] != word[i]:
            return False
    return True

пример таблицы будет выглядеть так:

[
  ['a','p','p','l','e','b'],
  ['u','y','c','v','a','s'],
  ['n','u','t','o','n','s'],
  ['t','n','c','v','d','b'],
  ['o','r','i','x','o','f'],
  ['e','a','t','i','n','g']
]

Ответы [ 4 ]

4 голосов
/ 10 ноября 2009
import itertools

def checkRow(table, r, pos, word):
    return all(w==x for w, x in itertools.izip(word, table[r][pos:]))

def checkCol(table, r, pos, word):
    return all(w==x for w, x in itertools.izip(word, table[r:][pos]))

ОП указывает, что «они еще не узнали об импорте», поэтому они предпочитают заново изобретать колесо, чем повторно использовать функциональные возможности в стандартной библиотеке. В общем, это было бы довольно абсурдной позицией, но в этом случае это не так уж и плохо:

def checkRow(table, r, pos, word):
    return all(w==x for w, x in zip(word, table[r][pos:]))

def checkCol(table, r, pos, word):
    return all(w==x for w, x in zip(word, table[r:][pos]))

Я надеюсь, что, по крайней мере, встроенные функции, такие как all и zip, являются приемлемыми - или OP скорее закодирует двоичный машинный язык вплоть до чистого металла, чтобы избежать изучения некоторых Python? -)

4 голосов
/ 10 ноября 2009

Разве это не просто так:

def checkCol(table, r, pos, word):
   for i in range(0, len(word)):
       if table[r+i][pos] != word[i]:
           return False
   return True
2 голосов
/ 10 ноября 2009
def checkRow(table, r, pos, word):
    return word=="".join(table[r][pos:pos+len(word)])

def checkColumn(table, r, pos, word):
    return word=="".join(row[pos] for row in table[r:r+len(word)])
1 голос
/ 10 ноября 2009
def intable(table, word):
    if any(word in ''.join(row) for row in table):          # check rows
       return True
    return any(word in ''.join(col) for col in zip(*table)) # check columns
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...