0

nバックトラッキングコードがいくつかの解決策を見つけたかどうかを確認する必要がある Python の基本的な問題があります (プロパティで 1 から数値へのすべてのサブリストを見つける必要があります|x[i] - x[i-1]| == m)。解決策があるかどうかを確認するにはどうすればよいですか? 私が見つけた潜在的な解決策を意味します。私はそれらを印刷するだけで、メモリに保存しません。解決策がない場合は、適切なメッセージを出力する必要があります。

4

1 に答える 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 に答える