四嫌疑人供詞:
已知 3 人說真話,1 人說謊。找兇手。
設兇手為 k ∈ {a,b,c,d}。
A真 ⇔ k!=a
B真 ⇔ k==c
C真 ⇔ k==d
D真 ⇔ k!=d (C說謊 ⇔ k!=d)
真話數 = (k!=a) + (k==c) + (k==d) + (k!=d) = 3。
#includeint main() { for (char k = 'a'; k <= 'd'; k++) { int truth = (k!='a') + (k=='c') + (k=='d') + (k!='d'); if (truth == 3) printf("killer=%c\n", k); } return 0; } // 輸出: killer=c
其他假設均不滿足 3 真 1 假。