基础算法----小岛上的和尚们

有这样一道题:

从前,有个小岛上只住着和尚。有些和尚的眼睛是红色的,而另一些的则是褐色。红色眼睛的和尚受到诅咒,如果得知自己的眼睛是红色的,那么当晚12点必须自行了断。(因为受到诅咒,所以只要得知自己的眼睛是红色的,则必须选择自杀,无一例外。)”

和尚们之间有一条不成文的规定,彼此不能提起对方眼睛的颜色。小岛上没有一面镜子,也没有可以反射自己容貌的物体。因此,没有任何人能够得知自己眼睛的颜色。出于这些原因,每个和尚都过着幸福的日子,也没有一个和尚自杀。


有一天,岛上突然来了一位游客,她对这个秘密并不知情。于是,这位游客对和尚们说:

“你们当中,至少有一位的眼睛是红色的。”

这位无心的游客当天就离岛而去,而和尚们却因第一次听到有关眼睛颜色的话题而惴惴不安。当晚,小岛上开始出现了可怕的事情,究竟是什么事呢?

先思考几秒钟。

其实这道题不是一道算法题,而更是一个计算机思维考察题。

更多的时候是考察一个程序员在得到一个需求的时候是否能从多个角度去思考,同时挖掘出产品经理给出需求背后有没有他没有想到或者没有表达出来的隐性需求,同时可以全方位考虑这个系统设计出来有没有bug。

  1. 我们可以假设如果和尚中没有一个红色眼睛的,这个结果会很恐怖,因为所有和尚看到其他和尚都是正常的,所以怀疑只有自己是红色的,所以晚上可能所有的和尚都自杀了。

  2. 如果有一个红眼睛和尚,那么死的应该是他,道理同第一条,第一个红眼睛和尚死了之后,第二天就太平了。

  3. 如果有两个和尚是红眼睛的,因为所有的和尚都最少看到一个红眼睛和尚,所以都不会自杀,但是第二天晚上,所有和尚都可能会以为红眼睛和尚没有自杀的原因是自己是另外的红眼睛和尚,有可能第二天晚上所有的和尚都自杀,也有可能所有和尚都知道至少一个红眼睛和尚,反而都不会自杀。

  4. 。。。其他结果类似推导,但是我们不会通过if/else方式将条件判断硬编码,需要抽离出一个对应配置平台服务。

所以这道题不是一道算法题,而是一道计算机思维题,考察我们能够用计算机角度去帮助产品需求做的更完善。

猜你喜欢

转载自my.oschina.net/u/1000241/blog/1785968
今日推荐