2017-06-15 4 views
0

Pythonからしばらく離れていますので、フォーマットスキルは存在しません。このようなものにリストを3SATフォームにフォーマットする

[[8, -6, -4], [-10, 4, 6], [6, -8, -9]] 

(x8 v ~x6 v ~x4)^(~x10 v x4 v x6)^(x6 v ~x8 v ~x9) 

、その後、別の入力はTまたはFに任意のガイダンスを変更するよう各番号を参照することができ、この形式の何かを回すために探し感謝されるだろう。 0の場合は、あなたのケースで縮退ようですので、私はあなたが0のが持っていないと仮定していること

import random 
def sample(): 
    nums = random.sample(range(-10, 10), 3) 
    return nums 

exlist = [] 
boundary = random.randint(3, 10) 
count = 0 
while (count < boundary): 
    count = count + 1 
    exlist.append(sample()) 

答えて

1

注意(それ以外の場合は〜X0 X0かになるのでしょうか?)

あなたがT/Fを保存すると仮定すると、

exvalues = [bool(random.randint(0,1)) for _ in range(10)] 

その後、あなたは、単に(あなたが後にある記号式を生成することなく)このような式を評価することができます:

all(any(exvalues[x] if x>0 else not exvalues[-x] for x in y) for y in exlist) 
このようなリスト

説明:すべての「サブ式」のグローバルandを取り、各サブ式は要素のグローバルorです(記号によってはnot)。

+0

ネガティブでランダムなリストを生成し、ゼロを除外する方法を確認できませんでした。 –

関連する問題