Refaktoryzowałem stary kod i napotkałem kilka warunków JEŻELI, które były zbyt złożone i długie, i jestem pewien, że można je uprościć. Domyślam się, że te warunki urosły tak bardzo z powodu późniejszych modyfikacji.
W każdym razie zastanawiałem się, czy ktoś z was zna dobry internetowy program upraszczający, z którego mogę skorzystać. Nie interesuje mnie żaden konkretny język, tylko uproszczenie, które obejmowałoby na przykład:
((A OR B) AND (! B AND C) OR C)
Podaj mi uproszczoną wersję wyrażenia, jeśli taka istnieje.
Spojrzałem na inne podobne pytania, ale żadne nie wskazało mi dobrego uproszczenia.
Dzięki.
boolean-logic
boolean-expression
mojarras
źródło
źródło
Odpowiedzi:
Możesz wypróbować Wolfram Alpha, jak w tym przykładzie na podstawie wprowadzonych danych:
http://www.wolframalpha.com/input/?i=((A%20OR%20B)%20AND%20(NOT%20B%20AND%20C)%20OR%20C)&t=crmtb01&f=rc
źródło
NOT C AND NOT A OR NOT B AND NOT C AND NOT D AND NOT A OR NOT B AND NOT C AND D AND A OR B AND C AND NOT D AND NOT A OR B AND C AND D AND A
.Wypróbuj
Logic Friday 1
to zawiera narzędzia z Uniwersytetu Kalifornijskiego (Espresso i misII) i umożliwia ich użycie z graficznym interfejsem użytkownika. Możesz dowolnie wprowadzać równania boolowskie i tabele prawdy. Posiada również graficzny schemat bramki wejściowej i wyjściowej.Minimalizacja może być przeprowadzona dwupoziomowo lub wielopoziomowo. Forma dwupoziomowa daje zminimalizowaną sumę produktów. Forma wielopoziomowa tworzy obwód złożony z bramek logicznych. Typy bramek mogą być ograniczone przez użytkownika.
Twoje wyrażenie upraszcza się do
C
.źródło
Odkryłem, że Boolean Expression Reducer jest znacznie łatwiejszy w użyciu niż Logic Friday. Ponadto nie wymaga instalacji i jest wieloplatformowy (Java).
Również w Logic Friday wyrażenie
A | B
po prostu zwraca 3 wpisy w tablicy prawdy; Spodziewałem się 4.źródło