-1

マトリックス内の単語を検索する関数を作成する必要があります。今のところ、単語が存在するかどうかを確認するために行ごとに検索しようとしています。これは私のコードです:

def search(p): 
    w=[]
    for i in p:
        w.append(i)
    s=read_wordsearch() #This is my matrix full of letters
    for line in s: 
        l=[]
        for letter in line:
            l.append(letter)
            if w==l:
                return True
            else:
                pass

このコードは、単語が行の最初の位置から始まる場合にのみ機能します。

たとえば、次のマトリックスがあります。

[[a,f,l,y],[h,e,r,e],[b,n,o,i]]

"fly" という単語を見つけたいのですが、私のコードは "here" や "her" などの単語は行の最初の位置から始まるため、検索にしか機能しないため、検索できません...

あらゆる形のヘルプ、ヒント、アドバイスをいただければ幸いです。(そして私の英語が下手でしたら申し訳ありません...)

4

4 に答える 4

1

マトリックスの各行を文字列に変換し、その中で検索作業を見つけようとすることができます。

def search(p):
    s=read_wordsearch()
    for line in s:
        if p in ''.join(line):
            return True
于 2014-12-23T21:29:42.250 に答える
0
def search(p): 
  w = ''.join(p)

  s=read_wordsearch() #This is my matrix full of letters
  for line in s: 
    word = ''.join(line)

    if word.find(w) >= 0:
      return True
  return False

編集: Python で利用可能な文字列関数は既にたくさんあります。それらを使用できるようにするには、文字列を使用する必要があります。

于 2014-12-23T21:14:06.700 に答える
0

テキスト内で単語を検索するためのヒントを紹介します。データマトリックスを推定できると思います。

 s = "xxxxxxxxxhiddenxxxxxxxxxxx"
 target = "hidden"
 for i in xrange(len(s)-len(target)):
     if s[i:i+len(target)] == target:
         print "Found it at index",i
         break

すべての長さの単語を検索したい場合、おそらく可能な解決策のリストがあるとします。

 s = "xxxxxxxxxhiddenxxxtreasurexxxxxxxx"
 targets = ["hidden","treasure"]
 for i in xrange(len(s)-1):
     for j in xrange(i+1,len(s)):
         if s[i:j] in targets:
             print "Found",s[i:j],"at index",
于 2014-12-23T21:11:53.483 に答える
0

join単語を作成し、 で検索するための内側のリストの文字in

def search(word, data):
    return any(word in ''.join(characters) for characters in data)

data = [['a','f','l','y'], ['h','e','r','e'], ['b','n','o','i']]
if search('fly', data):
     print('found')

data行列を含み、characters個々の内部リストの名前です。any最初の一致が見つかった後に停止します (短絡)。

于 2014-12-23T21:35:08.570 に答える