Logisch vereinfachen

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    Logisch vereinfachen

    Hallo Leutz,

    ich bin gerade am Überlegen ob man folgendes Schema noch vereinfachen kann (nur über Operatoren) :

    VB.NET-Quellcode

    1. If I1 and I2 Then
    2. If L Then _
    3. L = not(L)
    4. End If
    5. If I4 and I3 Then
    6. If Not(L) Then _
    7. L = not(L)
    8. End If

    Gruß Manga

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mangafreak1995“ ()

    Welche Bedingungen gehören nun zusammen? Das lässt sich daraus nicht ermitteln, füge mal mit End If das Ende hinzu damit man die Verschachtelung besser sehen kann, ansonsten

    VB.NET-Quellcode

    1. L = Not (I1 AndAlso I2 AndAlso L)
    2. L = Not (I4 AndAlso I3 AndAlso Not L)


    Müsste eigentlich funktionieren.
    Habs editiert (hatte es vorher in Python für den Gedankengang notiert). Also würde man auch sagen können :

    VB.NET-Quellcode

    1. L = Not(I1 And I2 And L) Or Not(I3 And I4 And Not(L))
    Werde es gleich mal ausprobieren.
    Wenn es sich nur um Boolean Werte (also keine numerischen Werte) handelt wird beim oberen L auf False gesetzt wenn I1 und("auch") I2 True sind bzw. beim unteren umgekehrt.

    Also
    If I1 AndAlso I2 Then
    L = False
    End If
    If I4 AndAlso I3 Then
    L = True
    End If

    Man muss aufpassen: Wenn I1 AndAlso I2 False ergibt wird der Wert von L beim ersten Mal nicht verändert! Genauso beim zweiten Mal.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Niko Ortner schrieb:

    VB.NET-Quellcode

    1. If I1 AndAlso I2 Then
    2. L = False
    3. End If
    4. If I4 AndAlso I3 Then
    5. L = True
    6. End If
    Lässt sich verkürzen auf:

    VB.NET-Quellcode

    1. L = (I3 And I4) And Not(I1 And I2)
    Ihr braucht hier übrigends kein AndAlso schreiben, weil ich diesen Operator nicht zur Verfügung habe.

    Wenn du dir das genau anguckst, dann siehst du doch das L evtl. ja schon den richtigen Wert hat. L wird nur gewechselt, wenn es muss.
    Nein. Was wenn z.B. I1 und I3 False sind?
    Dann bleibt der Wert von L unverändert, was er bei
    L = (I3 And I4) And Not(I1 And I2)

    nicht tut.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Recht du hast. Das heißt also, dass ich ja im Prinzip meines gar nicht vereinfachen kann.

    Mangafreak1995 schrieb:

    ich bin gerade am Überlegen ob man folgendes Schema noch vereinfachen kann

    Mangafreak1995 schrieb:

    VB.NET-Quellcode

    1. L = Not(I1 And I2 And L) Or Not(I3 And I4 And Not(L))

    wat







    ~~Rhetorische Pause~~


    Ich würde es so machen:

    VB.NET-Quellcode

    1. L = If (I1 AndAlso I2 Andalso L, false, L)
    2. L = If (I4 AndAlso I3 Andalso Not L, true, L)


    Man kann Variablen übrigens auch sinnvollere Namen geben.


    Die sinnvollsten Zeilen bei dir sind definitiv:

    Mangafreak1995 schrieb:

    VB.NET-Quellcode

    1. If L Then L = not(L)
    Und

    VB.NET-Quellcode

    1. If Not(L) Then L = not(L)


    Überlege mal. "Wenn L, dann L = NICHT L"? Wäre "Wenn L, dann L = False" nicht schöner?


    Du möchtest es ja vereinfachen. Bist du ein Fan von Inception?

    VB.NET-Quellcode

    1. L = Not Not Not Not If (If (I4 AndAlso I3 Andalso Not L, If (I4 AndAlso I3 Andalso Not L, false, L) , L) AndAlso I2 Andalso L = If (If (I4 AndAlso I3 Andalso Not L, false, L)AndAlso If (I4 AndAlso I3 Andalso Not L, false, L)Andalso L, true, L), true, L = If (I1 AndAlso I2 Andalso L, If (I4 AndAlso If (If (I4 AndAlso I3 Andalso Not L, If (I4 AndAlso I3 Andalso Not L, false, L) , L) AndAlso I2 Andalso L = If (If (I4 AndAlso I3 Andalso Not L, false, L)AndAlso If (I4 AndAlso I3 Andalso Not L, false, L)Andalso L, true, L), true, L = If (I1 AndAlso I2 Andalso L, If (I4 AndAlso I3 Andalso Not L, false, L), L))Andalso Not L, false, L), L))
    Ungetestet. Grob geschätzt ein konstanter Ausdruck für "False". Die ersten Nots werden auf jeden Fall wegoptimiert. ;)

    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „nikeee13“ ()

    Bin grad am Überlegen wie ich das einbauen könnte xD

    Sagen wir so: Es sind eig. keine Variablen sondern Redstoneleitungen... somit auch nur or und not (und alles was dadurch entsteht : and, nand, nor, xor,...)