Margaret C. Edmiston, Muriel Mandell
“Zagadki Czarodziejów”
Klub dla Ciebie, Warszawa 2003-2005

SKRADZIONE PĄCZKI 

Dwa elfy skradły dwadzieścia pączków. 
Jest aż czterech podejrzanych: Arn, Birn, Con i Dob.
Nie znamy ich zeznań, ale znamy fakty:
1. Jeśli paczki ukradł Arn, to jego wspólnikiem był Birn.
2. Albo Birn jest niewinny, albo Con jest niewinny, albo wreszcie
   obaj są niewinni.
3. Jeśli Con jest niewinny, to paczki ukradł Dob.
4. Con i Dob się nawzajem nie cierpią, więc nie mogli być 
   wspólnikami.

Która para elfów ukradła pączki ?

a,b,c,d to imiona elfów. a=1 oznacza, że Arn kradł, a=0 oznacza, że Arn jest niewinny itd. Podstawowy, zerowy warunek mówi, że dokładnie dwóch kradło. pierwszy, drugi, trzeci i czwarty to cztery pozostałe warunki zadania.

For[a=0,a<2,a++,For[b=0,b<2,b++,For[c=0,c<2,c++,For[d=0,d<2,d++,zerowy=a*b*(1-c)*(1-d)+b*c*(1-a)*(1-d)+c*d*(1-a)*(1-b)+a*c*(1-b)*(1-d)+a*d*(1-b)*(1-c)+b*d*(1-a)*(1-c);
(* można ten warunek zapisać znacznie prościej:a+b+c+d musi byc równa 2,ale w ten sposob łatwiej jest wyrazić koniunkcje,negacje i alternatywe warunków *)
pierwszy=(1-a)+b;(* implikacja zapisana przy pomocy alternatywy *)drugi=(1-b)+(1-c)+(1-b)*(1-c);
trzeci=c+d;(* implikacja zapisana przy pomocy alternatywy *)czwarty=(1-c)+(1-d);
If[zerowy*pierwszy*drugi*trzeci*czwarty≠0,Print["  a= ",a,",  b= ",b,",  c= ",c,",  d= ",d]]]]]]

Pączki ukradli Birn i Dob !