Closed nimec01 closed 3 days ago
Ich denke, das sollte wirklich nur gemacht werden, wenn auch die Eingabe entsprechend "umgestellt" wird. Also wenn @owestphal dazu kommt, das per Parser anzupassen. Vermutlich wäre dann auch ein anderer Name als display...
für die Option passender.
Ich denke, das sollte wirklich nur gemacht werden, wenn auch die Eingabe entsprechend "umgestellt" wird. Also wenn @owestphal dazu kommt, das per Parser anzupassen. Vermutlich wäre dann auch ein anderer Name als
display...
für die Option passender.
Ist der Gedanke hier dann abhängig von displayUsingSetNotation
(bzw. unter anderem Namen) auch nur eine Eingabe z.B. von Mengen zu erlauben? Oder sollte es immer möglich sein, beide Notationen zu nutzen?
Ja, man würde pro Aufgabennutzung festlegen, ob Mengen- oder Formelnotation verwendet werden soll, und das würde dann für Ein- und Ausgabe gelten. (Im Aufgabentext würde dann eben etwas in der Art stehen "Verwenden Sie die Mengennotation." oder gegebenenfalls das Gegenteil davon.)
Der Zustand jetzt sollte die meisten gewünschten Änderungen enthalten. Die Legende passe ich gleich noch an. Das Einhalten der Notation wird über das Delayed
Parsing abgewickelt. Es folgen einige Beispiele anhand der Step
task:
useSetNotation = False
mit korrekter Notation:
Betrachten Sie die zwei folgenden Klauseln:>>>> <A ∨ B ∨ ¬D> <<<<
>>>> <A ∨ ¬C ∨ D> <<<<
Resolvieren Sie die Klauseln und geben Sie die Resolvente an.
Geben Sie das in dem Resolutionsschritt genutzte Literal (in positiver oder negativer Form) und das Ergebnis in der folgenden Tupelform an: (Literal, Resolvente).
Beachten Sie dabei die folgenden möglichen Schreibweisen:
>>>>Negation: <-, ~, nicht> <<<<
>>>>Oder: <\/, oder> <<<<
>>>>Nutzen Sie zur Angabe der Resolvente eine Formel! Ein Lösungsversuch könnte beispielsweise so aussehen: <(A, nicht B oder C)> <<<<
Just ()
(D,A oder B oder -C)
---- Input ----
Delayed "(D,A oder B oder -C)"
---- Partial ----
Lösung ist nicht leer?
>>>> <Ja.> <<<<
Das gewählte Literal kommt in einer der Klauseln vor?
>>>> <Ja.> <<<<
Resolvente besteht aus bekannten Literalen?
>>>> <Ja.> <<<<
Just ()
---- Complete ----
Just ()
useSetNotation = False
mit falscher Notation:
Betrachten Sie die zwei folgenden Klauseln:>>>> <A ∨ ¬C ∨ D> <<<<
>>>> <¬A ∨ B ∨ ¬C> <<<<
Resolvieren Sie die Klauseln und geben Sie die Resolvente an.
Geben Sie das in dem Resolutionsschritt genutzte Literal (in positiver oder negativer Form) und das Ergebnis in der folgenden Tupelform an: (Literal, Resolvente).
Beachten Sie dabei die folgenden möglichen Schreibweisen:
>>>>Negation: <-, ~, nicht> <<<<
>>>>Oder: <\/, oder> <<<<
>>>>Nutzen Sie zur Angabe der Resolvente eine Formel! Ein Lösungsversuch könnte beispielsweise so aussehen: <(A, nicht B oder C)> <<<<
Just ()
(A,{-C,D,B})
---- Input ----
Delayed "(A,{-C,D,B})"
---- Partial ----
>>>>Ihre Abgabe konnte nicht gelesen werden.
Bitte stellen Sie sicher, dass Sie die geforderte Notation verwenden.
<<<<
Nothing
!!! The following would not be printed in Autotool !!!
---- Complete ----
>>>>"(answer string)" (line 1, column 4):
unexpected "{"
expecting white space, "{}", atomic Proposition or Negation
term structure does not allow nesting at this point<<<<
Nothing
useSetNotation = True
mit korrekter Notation:
Betrachten Sie die zwei folgenden Klauseln:>>>> <{ ¬B, C, ¬D }> <<<<
>>>> <{ A, D }> <<<<
Resolvieren Sie die Klauseln und geben Sie die Resolvente an.
Geben Sie das in dem Resolutionsschritt genutzte Literal (in positiver oder negativer Form) und das Ergebnis in der folgenden Tupelform an: (Literal, Resolvente).
Beachten Sie dabei die folgenden möglichen Schreibweisen:
>>>>Negation: <-, ~, nicht> <<<<
>>>>Oder: <\/, oder> <<<<
>>>>Nutzen Sie zur Angabe der Resolvente die Mengennotation! Ein Lösungsversuch könnte beispielsweise so aussehen: <(A, {nicht B, C})> <<<<
Just ()
(D,{-B,C,A})
---- Input ----
Delayed "(D,{-B,C,A})"
---- Partial ----
Lösung ist nicht leer?
>>>> <Ja.> <<<<
Das gewählte Literal kommt in einer der Klauseln vor?
>>>> <Ja.> <<<<
Resolvente besteht aus bekannten Literalen?
>>>> <Ja.> <<<<
Just ()
---- Complete ----
Just ()
useSetNotation = True
mit falscher Notation:
Betrachten Sie die zwei folgenden Klauseln:>>>> <{ ¬A, B, ¬D }> <<<<
>>>> <{ A, B, C }> <<<<
Resolvieren Sie die Klauseln und geben Sie die Resolvente an.
Geben Sie das in dem Resolutionsschritt genutzte Literal (in positiver oder negativer Form) und das Ergebnis in der folgenden Tupelform an: (Literal, Resolvente).
Beachten Sie dabei die folgenden möglichen Schreibweisen:
>>>>Negation: <-, ~, nicht> <<<<
>>>>Oder: <\/, oder> <<<<
>>>>Nutzen Sie zur Angabe der Resolvente die Mengennotation! Ein Lösungsversuch könnte beispielsweise so aussehen: <(A, {nicht B, C})> <<<<
Just ()
(A, B oder -D oder C)
---- Input ----
Delayed "(A, B oder -D oder C)"
---- Partial ----
>>>>Ihre Abgabe konnte nicht gelesen werden.
Bitte stellen Sie sicher, dass Sie die geforderte Notation verwenden.
<<<<
Nothing
!!! The following would not be printed in Autotool !!!
---- Complete ----
>>>>"(answer string)" (line 1, column 5):
unexpected "B"
expecting space or "{"<<<<
Nothing
Wie in #84 angemerkt wäre es nicht schlecht anhand einer Flag zu bestimmen, ob eine Klausel (oder KNF) in Mengennotation angezeigt werden soll. Dafür habe ich die Flag
displayUsingSetNotation
bei den Aufgabentypen Step und Resolve hinzugefügt. An der letztendlichen Eingabe-Syntax habe ich erstmal nichts geändert. Das wäre natürlich denkbar. Allerdings müsste man dann dieParse
Instanzen anpassen.