四嫌疑人供詞:
已知 3 人說真話,1 人說假話。編程找出兇手。
設兇手為 k ∈ {a,b,c,d}。每人陳述真值:
k != 'a'k == 'c'k == 'd'k != 'd' (C 說是 D,D 說 C 胡說 ⇔ 兇手不是 D)真話數 = (k!='a') + (k=='c') + (k=='d') + (k!='d') == 3
#include <stdio.h>
int 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
驗證:兇手是 C → A 真(非A)、B 真(是C)、C 假(非D)、D 真(非D) → 3 真 1 假 ✓
此類邏輯推理題均可建模為「遍歷候選,計算滿足條件的真值表達式計數」,適用於更複雜的多人多條件場景。