を確認するには、次のバックトラックアルゴリズムは、私がリストを持っている文字列のフォームマトリックス
私は、彼らがこのようなマトリックスを形成するかどうかを確認したいwords = ["ALI", "SIN", "ASI", "LIR", "IRI", "INI", "KAR"]
:
をなどをリストとして私の解決策を返します:
solution = ["ALI", "SIN", "IRI"]
私はこのコードを用意しました:
words=["ALI", "SIN", "ASI", "LIR", "IRI", "INI", "KAR"]
solution =[]
failedsolutions = []
def Get_next_word():
while True:
for word in words:
if (word in solution) == False:
solution.append(word)
if (solution in failedsolutions) == False:
return False
else:
solution.pop(len(solution) - 1)
return True
def Check_word_order():
checker = True
for i in range(len(solution)):
for j in range(len(words[0])):
for word in words:
if solution[i][j] == word[j]:
checker = False
else:
checker = True
if checker == False:
return checker
def main():
while True:
Get_next_word()
check = Check_word_order()
if check is False:
#Backtrack
failedsolutions.append(solution)
solution.pop(len(solution) - 1)
# else:
# solution.append()
print(solution)
main()
私は疲れており、コードをデバッグできなくなりました。ヘルプは高く評価されます。 ありがとうございました ps:良い方法があれば私のコードを修正しません。
は、具体的にどのようなパターンあなたが作成しようとしていますか?サンプル画像からはすぐには分かりません。 – Ajax1234
あなたの持っている問題とは関係ないかもしれませんが、(解決策の単語== False)は、「解決していない単語」と書くことができます。変数をブールリテラルと比較する必要はほとんどありません。 – Blckknght
@ Ajax1234私は列から見たときに他の単語を形成しながら行に単語を入れようとします。悪い説明のため申し訳ありません – tugkan