n
バックトラッキングコードがいくつかの解決策を見つけたかどうかを確認する必要がある Python の基本的な問題があります (プロパティで 1 から数値へのすべてのサブリストを見つける必要があります|x[i] - x[i-1]| == m
)。解決策があるかどうかを確認するにはどうすればよいですか? 私が見つけた潜在的な解決策を意味します。私はそれらを印刷するだけで、メモリに保存しません。解決策がない場合は、適切なメッセージを出力する必要があります。
1 に答える
0
コメントで提案したように、ソリューションのジェネレーターを作成することにより、コンピューティングを I/O 印刷から切り離したい場合があります。|x[i] - x[i-1]| == m
ソリューションを生成するためのジェネレーターを定義したと仮定しましょう。
def mysolutions(...):
....
# Something with 'yield', or maybe not.
....
実装されたジェネレーターに値があるかどうかを確認するために使用できるジェネレーター デコレーターを次に示します。
from itertools import chain
def checkGen(generator, doubt):
"""Decorator used to check that we have data in the generator."""
try:
first = next(generator)
except StopIteration:
raise RuntimeError("I had no value!")
return chain([first], generator)
このデコレーターを使用して、以前のソリューションを次のように定義できるようになりました。
@checkGen
def mysolutions(...):
....
次に、I/O の関連付けを解除するために、そのまま使用できます。
try:
for solution in mysolutions(...):
print(solution) #Probably needs some formatting
except RuntimeError:
print("I found no value (or there was some error somewhere...)")
于 2015-12-28T16:30:50.980 に答える