Devo analizzare dei dati relativi a N "oggetti" (potrebbero essere persone, prodotti o altro) per ciascuno dei quali dispongo di due tipi di informazioni numeriche P e Q.
  P(i) e Q(i) siano le informazioni relative all'oggetto i-esimo.
  Con un programma o un'altra applicazione devo contare il totale Tot degli oggetti che rientrano in almeno una tra le seguenti categorie:
- oggetti che hanno P maggiore di Q
- oggetti che hanno solo una delle due informazioni uguale a 1
  Come devo indicare, usando gli operatori logici, la condizione che corrisponde agli oggetti da conteggiare?  Ossia, se, ad es., impiegassi R, cosa dovrei mettere al posto di CCC nella seguente istruzione?
T <- 0; for(i in 1:N) if(CCC) T <- T+1
(a) Rispondi come ritieni meglio usando operatori scelti tra ! (NOT), | (OR), & (AND) e xor
(b) Rispondi uando solo !, & e |
(c) Rispondi usando solo ! e &
["è maggiore o uguale a", "è minore o uguale a", "è diverso da" si indicano con, rispettivamente, ">=", "<=", "!="]

(a)  P(i) > Q(i) | xor(P(i)==1,Q(i)==1)
(b)  P(i) > Q(i) | ((P(i)==1 | Q(i)==1) & NOT((P(i)==1 & Q(i)==1))
o:  P(i) > Q(i) | ((P(i)==1 & Q(i)!=1) | ((Q(i)==1 & P(i)!=1))
(c) !(P(i) <= Q(i) & !(P(i)==1 & Q(i)==1) & !(P(i)!=1 & Q(i)!=1)
  Alle risposte si arriva facilmente con un po' di ragionamento. Esse potrebbero essere controllabili con le tavole di verità. A mano sarebbe una cosa un po' lunga. Possiamo usare un foglio eletronico o, più comodamente, un programma. Verifichiamo ad es. l'equivalenza tra (a) e (b) con R, tenendo conto che TRUE e FALSE possono essere rappresentate con 1 e 0.

Per l'uso di "cat" vedi qui; per "\t" vedi qui.

for(A in 1:0) for(B in 1:0) for(C in 1:0)
cat( A,B,C, '\t', A|xor(B,C), '\t', A | ( (B & !C)|(C & !B) ), '\n' )
1 1 1    TRUE    TRUE 
1 1 0    TRUE    TRUE 
1 0 1    TRUE    TRUE 
1 0 0    TRUE    TRUE 
0 1 1    FALSE   FALSE 
0 1 0    TRUE    TRUE 
0 0 1    TRUE    TRUE 
0 0 0    FALSE   FALSE