2

私は 4x4 の文字表を持っており、そこで可能なすべてのパスを見つけたいと思っています。それらは言葉の候補です。「使用済み」変数に問題があります。これは、パスが既に存在するすべての場所を含むリストであるため、そこには再度移動しません。すべてのパスに 1 つの使用済みリストが必要です。しかし、正しく動作しません。たとえば、現在の単語と使用済みリストを印刷するテスト印刷がありました。単語に文字が 1 つしかない場合もありましたが、パスは 16 個のセル/インデックスすべてを通過していました。

サイズ 8 の for ループは、考えられるすべての方向に対して存在します。また、main-function は、chase-function を 16 回実行します。つまり、可能な開始点ごとに 1 回です。Move 関数は、特定の方向に移動した後にインデックスを返します。is_allowed は、特定の部門への移動が許可されているかどうかをテストします。サンプル入力: oakaoastsniuttot. (最初の 4 文字が最初の行である 4x4 の表など) サンプル出力: ある単語の辞書にあるすべての実際の単語使用されていませんが、使用されています。

def chase(current_place, used, word):

   used.append(current_place)   #used === list of indices that have been used
   word += letter_list[current_place]
   if len(word)>=11:
       return 0
   for i in range(3,9):
       if len(word) == i and word in right_list[i-3]:  #right_list === list of all words
        print word
        break
   for i in range(8):
      if is_allowed(current_place, i) and (move(current_place, i) not in used):    
          chase(move(current_place, i), used, word)
4

1 に答える 1

2

used問題は、渡されるリストが1つしかないことです。これを修正するには、次の2つのオプションがありますchase()

  1. のコピーを作成usedし、そのコピーを操作します。
  2. 関数から戻る前に、最初に行った操作を元に戻しappend()ます。
于 2013-01-25T19:34:30.593 に答える