"Implementieren Sie eine Funktion, welche für die gegebene 3-SAT Instanz
\( f(x_0,x_1,x_2,x_3) = (x_1 ~ ∨ ~ \bar x_2 ~ ∨ x_3) ∧ (x_0 ~ ∨ x_2 ~ ∨ \bar x_3) ∧ (\bar x_1 ~ ∨ ~ x_2 ~ ∨ x_3) \) und für eine gegebene Belegung der Variablen \( x_0,..., x_3 \) überprüft, ob die Belegung die Funktion f erfüllt.
Die Funktion Test(...) soll ein int-Array übergeben bekommen, in welchem an i-ter Stelle die Belegung der Variablen \(x_i\) steht, dargestellt durch eine 1 oder 0. Ihre Funktion Test(...) soll öffentlich aufrufbar sein und den Wert true zurückgeben, falls die gegebene Belegung die Funktion f erfüllt, andernfalls false."
Ich hab die Aufgabe gemacht, allerdings habe ich die Fälle, in denen f nicht erfüllbar ist, explizit mit if-else-Abfragen hingeschrieben. Es ist zwar eine Lösung, die man so bestimmt für 3 oder wie in diesem Fall 4-bit machen kann, aber für größere Eingaben eher nicht mehr geeignet ist.
Es gibt noch eine Möglichkeit es anders und eleganter zu lösen, aber ich komm nicht drauf.
Meine Idee war, das Array mit der Belegung für jede Stelle zu durchlaufen, aber das klappt irgendwie nicht bzw nicht so wie ich es mir vorgestellt habe.
Hat jemand eine Idee oder Vorschlag, wie man es lösen könnte.