Logische Terme vereinfachen

X

Xyz1

Gast
Ich glaube, es ist alles nur, weil ich nicht a) - j) davorgeschrieben habe.

Wenn Lestas langweilig ist, kann er ja einen Algorithmus herstellen, der erst mal bestimmt, ob Wahrheitswerte oder Zahlen, und dann ggf. noch automatisch vereinfacht. Also das, was auch Compiler, JIT und Optimierung machen. Term(e) parsen & evaluieren, ist aber eine Mammutaufgabe.^^
 

Meniskusschaden

Top Contributor
Kennt ihr die Schreibweise x == y == 0 nicht?
Als Java-Ausdruck ist es ungültig. Ich kenne es eigentlich nur aus der Mathematik (dann aber ohne gedoppelte Gleichheitszeichen), wenn man ausdrücken möchte, dass die drei Werte gleich sind. Hier geht es aber nicht darum, zu zeigen dass die Werte gleich sind, sondern einen logischen Ausdruck zu definieren. Dafür finde ich die Schreibweise nicht so zweckmässig, wenn man nicht definiert, wie sie zu lesen ist. Ich bezweifle auch, dass es als boolscher Ausdruck akzeptiert wird, denn den könnte man bei Aufgabe j) auch so interpretieren, dass x == y == truewie(x == y) == truezu lesen ist. Und das wäre auch wahr, falls x und y beide false wären. Ich stimme dir also zu, dass es so, wie du es offenbar gemeint hast, richtig ist. Aber wenn es als Lösung eingereicht wird, wird es wahrscheinlich als fehlerhaft bewertet.
 
X

Xyz1

Gast
Ja, schon klar. Mit der Klammerung und den Vorfahrtsregeln muss man auch aufpassen. Kanonische Infixnotation lautete dann so:
((x == true) && (y == true))
vielleicht sogar noch um 'true' 'ne Klammer.

Also erst mal, bevor man auch nur eine Aufgabe löst, muss klar sein:
Befinden wir uns in der:
Aussagenlogik
Prädikatenlogik
Java
JS (Java ist nicht JS ;) )
Mathematik
boolesche Algebra
Mengentheorie
was gibt es denn noch....
Quantenphysik
usw.

Ich hab mir halt eine eigene Grammatik & Syntax definiert.
 

Gmork

Mitglied
@DerWissende :
Es tut mir Leid, wenn ich dich mit meiner Aussage angegriffen habe und
ich würde niemals bestreiten, dass der Gedanke hinter deinen Lösungen richtig
ist und es vielleicht auch eine Sprache gibt, die diese Syntax akzeptiert.

Ich habe auch nur gesagt, dass die Lösung bzgl Java-Syntax falsch ist.
Selbst wenn du einen Algorithmus schreibst, der Java um diese Syntax
erweitert, ist das klassische Java ohne Algorithmus immer noch nicht
in der Lage diese Syntax zu lesen.
Damit wäre das als Lösung für einen Java-Anfänger ungeeignet.

Und versteh' mich bitte nicht falsch. Du konntest ja nicht wissen, dass
Lestas89 Java-Code verwendet hat, da er es nicht angemerkt hat.
 
Zuletzt bearbeitet:
X

Xyz1

Gast
Ach was, ich bin nicht so empfindlich/schnell beleidigt, aber dass auf einmal die Hälfte der Aufgaben/Antworten falsch ist/sei, ach egal.

Bei DIESEN Aufgaben kommt es um so mehr auf den Kontext an, in dem sie stehen.

^ (XOR) könnte genausogut das logische Und, bekannt aus der Mathem., sein.

x = y = 0 könnte, so geschrieben, genausogut zwei Zuweisungen sein.

Dann mal schönen Abend.
 

Meniskusschaden

Top Contributor
Der Vollständigkeit halber noch eine Anmerkung, weil ich geschrieben hatte, dassa == b == 0kein gültiger Java-Ausdruck ist. Das stimmt zwar, aber das andere Beispiel (Aufgabe j)x == y == trueist durchaus ein gültiger Java-Ausdruck. Folgender Code
Java:
public static void main(String[] args) {
    boolean x = false;
    boolean y = false;
    System.out.println((x || y) && (x == y));
    System.out.println(x==y==true);
}
erzeugt folgende Ausgabe:
Code:
false
true
 
X

Xyz1

Gast
Ja, lüften wir das Geheimnis, dass x == y auch true ist, wenn beide false sind. Damit unterscheidet es sich von &&.

Java vergleicht auch keine boolean und int. Gut so.

Hätte ich meins mal nicht in den Raum geworfen, ich dachte, jeder versteht XOR und das andere auch.

Schönen Sonntag.
 

Neue Themen


Oben