Ich gehe durch Z3py und habe eine Frage mit der Verwendung der API in einigen speziellen Fällen. Der folgende Code ist eine vereinfachte Version von etwas, für das ich letztendlich Z3 verwenden möchte. Einige meiner Fragen sind: 1. Gibt es eine Möglichkeit, eine beliebig lange Reihe von Werten wie die Variable 'a' unten zu erstellen? 2. Können Sie auf jedes Element des Arrays in Schleifen durch Z3py zugreifen? 3. Ist es möglich, ein Ergebnis in eine Originalvariable zurückzuverweisen oder wird eine neue Variable benötigt? Wird die Konvertierung zu CNF automatisch eine eindeutige ID hinzufügen? (dh a + = b)Learning Z3py - Gibt es Unterstützung für Arrays und Loops
Insgesamt bin ich verloren, wie man die Z3py API für etwas wie den folgenden Algorithmus anwendet, wo die Lösung von 'b' abhängt. Jede Hilfe oder Hinweise ist/sind dankbar, danke.
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"
Ich würde gerne überprüfen, ob ich die Frage verstanden habe. Es scheint, dass Sie Z3Py verwenden möchten, um das Problem zu lösen: Geben Sie 'a' und' d' an und suchen Sie 'b' so, dass Sie' Gut' drucken. Ist es das? –
Ja, das stimmt. – daybreak