J'ai rencontré un code obj-C et je me demande s'il y a un moyen de le simplifier: est la même chose que? P> #if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)
7 Réponses :
Obtenez un stylo + papier + Essayez, il n'y a que 8 entrées possibles p>
Naturellement, j'ai essayé cela en premier. J'ai réputé la source du code pour être au-dessus de cette formulation apparemment obscure: OSX's Foundation.h. Par conséquent, j'ai douté de mes griffonnages. Mais oui, +1 pour votre excellent premier instinct.
Je suis physicien expérimental - étant donné le choix de faire des mathématiques ou de faire des mesures, je vais pour la solution muette
Je suis aussi, mais lequel est idiot et lequel ne dépend pas de l'expérience. ;)
@John - Eh bien, l'option Smart est de le faire la voie la plus stupide d'abord!
Oui c'est la même chose. Utilisation de règles de Morgan: p>
(a &&! (B || c)) || (B || c) = (a &&! B &&! C) || (B || c). Donc, la seconde sera vraie lorsque A = 1 et B, C = 0. Si ce n'est pas le cas, la deuxième partie (B || C) sera vraie lorsque B || C. Donc, il est égal au premier. P>
Oui, les deux expressions sont équivalentes. (Je viens d'écrire quelques fonctions pour tester les huit possibilités.) P>
A | B | C | (B || C) | (!(B || C)) | (A && !(B || C)) | (A && (!(B || C)) || (B || C) | (A || B || C) ------------------------------------------------------------------------------------------------------ T | T | T | T | F | F | T | T T | T | F | T | F | F | T | T T | F | T | T | F | F | T | T T | F | F | F | T | T | T | T F | T | T | T | F | F | T | T F | T | F | T | F | F | T | T F | F | T | T | F | F | T | T F | F | F | F | T | F | F | F Based on the last two columns, I would say yes.
@Detunized, ouais je && 'ed les deux derniers au lieu de ||' ed. Ils sont égaux
Oui. Comme les autres l'a dit, vous pouvez la vérité la table. Les règles de Morgan peuvent également aider.
Cependant, je pense que la meilleure option est d'utiliser un Carte Karnaugh . Il faut quelques minutes pour apprendre, mais Karnaugh Maps vous permet de trouver systématiquement l'expression la plus minimale de la logique booléenne. Les tables de vérité peuvent vérifier une minimisation, mais elles ne peuvent pas vous le donner. P>
Voici comment je l'ai eu: p>
Premier, la disposition de la table: P>
AB 00 01 11 10 0| F | T | T | T | C 1| T | T | T | T |
C'est une meilleure réponse que la question méritée et éducative à démarrer.
Ils sont les mêmes. Vous pouvez utiliser générateur de table de vérité pour le tester. Ces deux expressions donnent false code> uniquement dans un cas, lorsque
a code>,
b code> et
c code> sont
faux < / code>. p>
C'est un lien intelligent. Je vais le partager avec mes amis de mathématiques. +1
Vous pouvez aussi dire: p>
(a &&! (B || c)) || (B || c) réécrit à (A &&! W) || W (1) p>
(1) réécrit à (a &&! w) || (A ||! A || W) (2) P>
(2) réécrit (A &&! W) || (A || w) || (! A || w) (3) p>
(3) réécrit (a &&! w) || ! (A &&! W) || (A || W) (4) P>
(4) conduit à un || W puis a || B || C fort> p>
Vous pouvez aussi dire a ^ (b || c) code> non?
Pourquoi ne pas simplement mettre en œuvre une petite table de vérité avec les résultats et le tester vous-même? Il n'y a que 8 entrées différentes | A = true, b = true, c = vrai | A = vrai, b = vrai. C = faux | et ainsi de suite. Comparer les tables de vérité. Si les sorties sont identiques, votre logique est équivalente.
Vos parenthèses dans l'en-tête de la question sont légèrement différentes que dans la question elle-même. Si l'en-tête est correct, alors la section "! (B || c) || (b || c)" peut être remplacé par "vrai", vous laissant avec "A && TRUE", ce qui équivaut à Just A. D'autre part, la version de la question semble manquer une paire de parenthèses, sinon vous avez une erreur de syntaxe. Au-delà de cela, je suis d'accord avec les autres affiches, créez les tables de vérité.
@Peter Perháč - merci pour la modification!