Przechodzę Z3py i mam pytanie, jak korzystać z API w kilku konkretnych przypadkach. Poniższy kod jest uproszczoną wersją czegoś, co ostatecznie chciałbym użyć Z3 dla. Oto niektóre z moich pytań: 1. Czy istnieje sposób na utworzenie dowolnie długiej tablicy wartości, takiej jak zmienna "a" poniżej? 2. Czy możesz uzyskać dostęp do każdego elementu tablicy w pętlach przez Z3py? 3. Czy możliwe jest przypisanie wyniku do oryginalnej zmiennej lub czy potrzebna jest nowa zmienna? Czy konwersja do CNF automatycznie doda unikalny identyfikator? (tj. a + = b)Nauka Z3py - Czy istnieje wsparcie dla macierzy i pętli
Ogólnie, jestem zagubiony, jak zastosować API Z3py do czegoś podobnego do poniższego algorytmu, w którym rozwiązanie zależy od "b". Każda pomoc lub wskazówki są doceniane, dziękuję.
import sys
import struct
a = "\xff\x33\x01\x88\x02\x11\x03\x55"
b = sys.stdin.read(1) #a byte of user input - value 'a' is good
c = ''
d = ''
for x in range(len(a)):
c += struct.pack('B', int(a[x].encode('hex'), 16)^int(b.encode('hex'), 16))
print c.encode('hex')
second = '\x23\x23'
x = 0
while x < len(c):
d += struct.pack('h', int(c[x:x+1].encode('hex'), 16)^int(second.encode('hex'), 16))
x += 2
print d.encode('hex')
if d == '\xbd\x23\x43\x23\x40\x23\x41\x23':
print "Good"
else:
print "Bad"
Chciałbym sprawdzić, czy rozumiem pytanie. Wygląda na to, że chcesz użyć Z3Py do rozwiązania problemu: biorąc pod uwagę 'a' i' d', znajdź 'b' tak, abyś wydrukował' Good'. Czy to to? –
Tak, zgadza się. – daybreak