今天逛论坛看到一道非常有意思的题目“由杀人游戏写程序分析”
原题如下:
某地发生了一起谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯中的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说。 已知3个人说了真话,1个人说的是假话。请根据这些信息,写一个程序来确定到底谁是凶手 。
这是一道非常简单的逻辑思维题,正常人都可以推理出谁是凶手,但是如果叫你写一个程序来判断谁是凶手呢?你能写出来吗?或许你能写出来,但你写的程序一定是最好的吗?
事实上很多人都是写不出来的,因为不懂得把自己所想的用程序表示出来,而一些能够写出来的,却把程序写得过于复杂。昨天一个同学跟我说了这样一句话“程序是最公正的,能够运行出你想要结果的程序就是对的”。我想了一下,是对的。但不够完美,真正的程序员应该追求用最完美的程序来运行出想要的结果。
答案揭晓了,(*^__^*) ,你一定会惊叹作者的聪明才智。
<?php
$men = array ( 'A','B','C','D' ) ; //四个嫌疑犯
foreach ( $men as $man ) //逐个判断。
{
if( ($man!='A')+($man=='C')+($man=='D')+($man!='D') == 3 ) //有三个人说的话是真的话条件成立
echo $man . ' is the killer.' ;
}
?>This is perfect program。
« 上一篇:php+mysql+thinkphp学生选课系统 帝国CMS导入模板的教程(注意编码):下一篇 »