単純な暗号文ソルバーを作成していますが、再帰関数を「展開」するのに問題があります。他の理由で展開する必要があります。そうしないと、再帰的になります。
アイデアは次のとおりです。さまざまな数のリストがあり、それぞれに単語が含まれています。関数の仕事は、各リストを調べ、単語が現在のアルファベット設定に適合することを確認した後、そのスコアを見つけることです。したがって、次のリストがある場合:
LIST1: [the, and, can,...]
LIST2: [kids, cars, knee,...]
LIST3: [talks, walks, music,...]
...
そして、関数は各リストを(順番に)調べて、最適な文を見つけようとする必要があります。(比較するために呼び出すスコアリングアルゴリズムがあります。)最初のリストの最初の単語から開始し、機能する単語が見つかるまで2番目のリストを繰り返し、次にその中の単語が見つかるまで3番目のリストの繰り返しを開始します。動作するリストなど。3番目のリストの単語がなくなると、2番目のリストに戻って次の動作する単語を見つけ、完了するまでプロセスを続行する必要があります。
Product関数を使用してみましたが、正しく機能しません...可能なすべての組み合わせが得られ、技術的には機能しますが、あまり効率的ではありません。
def find_sentence():
cycle through first list:
cycle through second list:
if word works:
start cycling through third word list.
else:
keep cycling through 2nd word list.
...
すべての単語リストを調べて、しきい値を超えるスコアを見つけるまで続けます。
何か助けはありますか?
バクリウの回答から:迅速な返信ありがとうございます!私はPythonが得意ではありませんが、これが必要な方法で機能しているとは思いません。あなたの解決策は、うまくいく(またはスコアに合う)すべての単語を見つけることが目標であるという点でProductメソッドに似ています。使用する必要のあるメソッドは次のとおりです。1。最初のリストの最初の単語から始めます。2.次の単語リストの反復を開始します。3.これらの単語のいずれかが機能したら、3番目のリストなどを調べ始めます。4。最後(単語の最後のリストまで)に到達して候補を見つけたら、次のように解決策があります。動作する各リストに1つの単語があります。5.たとえば、リスト3の単語が収まらない場合は、リスト2に戻り、そのリストを検索し続け、機能する次の単語を見つけて、リスト3をもう一度開始し、何も機能しないまで続行する必要があります。もしくは、あなた' 終わりに達しました。これが明確であることを願っています。何か明確にできることがあれば教えてください。