Para quem fez informática: alguém se lembra de aritmética lógica?
Sabia que dá para aplicar no código-fonte de uma aplicação?
Por exemplo, se eu tenho a condição:
if (((x == 0) || (y == 0)) && ((x == 0) || (z == 0))) {
...
}
Eu posso reduzi-la pela equivalência:
(A OR B) AND (A OR C) -> A OR (B AND C)
Assim, eu posso simplificar o código da seguinte maneira:
if ((x == 0) || ((y == 0) && (z == 0))) {
...
}
A mesma coisa, eu poderia fazer com outras expressões:
(A AND B) OR (A AND C) -> A AND (B OR C)
(A AND B) AND (A AND C) -> A AND B AND C
(A OR B) OR (A OR C) -> A OR B OR C
O legal, é que vale para aquelas expressões mais "complicadas" (ou mais "cabeças", como alguns falam :P ) :
NOT A OR NOT B -> NOT (A AND B)
NOT A AND NOT B -> NOT (A OR B)
(NOT A AND B) OR (NOT B AND A) -> A XOR B
(NOT A OR B) AND (NOT B OR A) -> NOT (A XOR B)
Vamos pegar a última expressão acima:
if (((!(a > b)) || (c < d)) && ((!(c < d)) || (a > b))) {
...
}
Aplicando:
(NOT A OR B) AND (NOT B OR A) -> NOT (A XOR B)
Temos:
if (!((a > b) ^ (c < d))) {
...
}
Será que isso ajuda alguém?
Até!
Nenhum comentário:
Postar um comentário