Tworzę listę bool XS, jeden z nich jest prawdziwy # b jest losową liczbą xs = [bool ("xs {i}". Format (i)) dla I w zasięgu (0, b)] # tylko jeden jest prawdziwy S.Add (PBEQ ([x, 1) dla X w XS], 1)) IF S.Check () == ...

0
A.. 15 marzec 2021, 17:43

1 odpowiedź

Najlepsza odpowiedź

Możesz pętli nad xs i ocenić:

from z3 import *

b = 10
xs = [Bool("xs_%d" % i) for i in range(0,b)]

s = Solver()
s.add(PbEq([(x,1) for x in xs], 1))

if s.check() == sat:
   m = s.model()
   for x in xs:
       if(m.eval(x)):
           print("%s is true" % x)
       else:
           print("%s is false" % x)

Kiedy to uruchomię, drukuje:

xs_0 is true
xs_1 is false
xs_2 is false
xs_3 is false
xs_4 is false
xs_5 is false
xs_6 is false
xs_7 is false
xs_8 is false
xs_9 is false
1
alias 15 marzec 2021, 14:50