今天的题目原题是这样的:

黑与白:
有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。五人对坐,每人都可以看到其它人额头上的纸的颜色。五人相互观察后,
A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。”
B说:“我看见其它四人额头上帖的都是黑纸。”
C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。”
D说:“我看见四人额头上帖的都是白纸。”
E什么也没说。
现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。问这五人谁的额头是帖白纸,谁的额头是帖黑纸?

这个问题跟上一篇的“谁说谎”原理是一样的。

“无论谁都有 黑 跟 白 两种可能”

那我们就能确定有 5 个for进行循环嵌套

for(var A = 0 ;A<=1;A++)
{for(var B = 0 ;B<=1;B++){for(var C = 0 ;C<=1;C++){for(var D = 0 ;D<=1;D++){for(var E = 0 ;E<=1;E++){//逻辑判断的代码在这里
                        }}}}
}

接下来我们一句一句的分析:

A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。”

那么,A 是白纸的话 有   A==(B+C+D+E==3)==true 如果 A 是黑纸 ,

那 A==(B+C+D+E==3) 依然成立,只是 此时为 A==(B+C+D+E==3)== false 而已 ,所以 我们写 A==(B+C+D+E==3)

B说:“我看见其它四人额头上帖的都是黑纸。”

意思是 B 等于1 的话  B==(A+C+D+E ==0)==true    B 不等于 1 的时候也都变为 false 所以也可以写成  B==(A+C+D+E ==0)  或者  B==!(A||C||D||E)

C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。”

同 A 的道理  有 A==(B+C+D+E==3)

D说:“我看见四人额头上帖的都是白纸。”

这里可以写成 D==(A+B+C+E==4) 或者 D==(A&&B&&C&&E)

最后得到的代码是这样的:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
for(var A = 0 ;A<=1;A++)
{for(var B = 0 ;B<=1;B++){for(var C = 0 ;C<=1;C++){for(var D = 0 ;D<=1;D++){for(var E = 0 ;E<=1;E++){if((B==!(A||C||D||E))&&(D==(A&&B&&C&&E))&&(C==(B+A+D+E==1))&&(A==(B+C+D+E==3)))alert("a:"+A+"b:"+B+"c:"+C+"d:"+D+"e:"+E);}}}}
}</script>

结果 是 : C和E 是白纸,其它的是黑纸

ps:现在越想越觉得自己是有多蠢啊,明明很简单却花了挺长的时间来做,都有点想放弃做程序员的念头了

转载于:https://www.cnblogs.com/mengtree/p/5259784.html

训练趣题:黑与白 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。(此处用javascript实现)...相关推荐

  1. c语言编程判断谁说谎,c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)...

    (第一篇博文) 今天在一个交流群里见他们无聊,然后找到之前收藏的一些c语言题目放出去想让他们做,结果反倒是自己不会做,于是花了很多时间去想. 原题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四 ...

  2. LeetBook《程序员的算法趣题》Q18---水果酥饼日

    <程序员的算法趣题>-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言. Q18 水果酥饼日   日本每月的 22 日是水果酥 ...

  3. 《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q13)

    <程序员的算法趣题>-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言.有兴趣的同学,可以购书阅读~ 在此更新个人编写的Pyt ...

  4. 逻辑思维训练500题(带答案)前237题 文末附完整版PDF

    第一章 假设法 一个真实的假设往往可以让事实呈现眼前,让真理浮出水面.一个人如果做什么事都可以让其思维以这些假设前提为基础,那么他便能真真正正地活在NLP里而不会陷入困境,他的人生也就会有更大地进步和 ...

  5. 趣题:求两圆柱相交部分的体积

    昨天去图书馆看趣味数学大师马丁加德纳的小册子<意料之外的绞刑>,看到了这个趣题:求两圆柱相交部分的体积(两圆柱半径都为1)(正交).要求是不用微积分,只用高中生就能看懂的简单数学.如果你难 ...

  6. 《新知客》趣题专栏 2010.07

    从本月起,我开始在<新知客>杂志上主持一个趣题栏目.每月杂志发行后,我将在 Blog 上同步更新. 推理: 1. 老王熬夜工作到凌晨 2 点多时,实在不行了,倒在床上就开始呼呼大睡.睡觉前 ...

  7. 《新知客》趣题专栏2010.08

    目前,我正在<新知客>杂志上主持一个趣题栏目.每月杂志发行后,我将在 Blog 上同步更新.点击 这里 可以查看往期题目. 推理 1. 下一个图形是什么? 2. 小 A 和小 B 玩游戏. ...

  8. 100%的程序员都想挑战的算法趣题!| 码书

    计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,"算法" ...

  9. 我敢打赌,这是98%的程序员都想挑战的算法趣题!

    计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,"算法" ...

  10. 100% 的程序员都想挑战的算法趣题!

    作者 | 图小敏 计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,&quo ...

最新文章

  1. 计算机视觉算法工程师(旷视、商汤、智云、海康)面试总结
  2. STM32向量表详细分析
  3. oracle 11g 环境,Linux彻底清理Oracle 11g RAC环境方案
  4. 日志中的秘密:Windows登录类型
  5. 深层神经网络——多层网络解决异或运算
  6. 给还是不给?又一个国家要求苹果必须为iPhone 12提供充电器
  7. 访问控制权限和 ------java命名规范
  8. VB6(Fast Report Studio 4.6.80)
  9. PAIP.WEB程序网站安全扫描检测工具(桌面程序)总结
  10. Python 计算彩色图像信噪比
  11. nginx 下配置禅道
  12. STM32制作FLASH字库
  13. c语言万花筒,C/C++——元胞自动机万花筒
  14. 批量注册阿里云备案域名
  15. 连接可用AP,提示“已连接,但无法访问互联网”,过一会变成“网络连接受限”,实际可以上网
  16. maxwell deamon 监听mysql binlog 二进制文件实现数据同步到
  17. MCU-LCD屏与RGB-LCD屏的区别?
  18. Python——describe函数值输出含义/分位值的计算和含义
  19. 【C++】入门第一课
  20. 现在QQ上的那些“黑客”们

热门文章

  1. 程序员的自我修养_之四_曾国藩是如何脱胎换骨的
  2. H3C基础配置文档抄录10-ACL和QoS配置
  3. java项目 科学计算器_结对项目-增强型科学计算器
  4. 常见电脑故障之网络不通
  5. 论文开题报告怎么写?
  6. 天语W700 wipe
  7. 罗伯特扫地机器人电池如何取_再续一年——iRobot Braava 380拖地机器人自己动手更换电池...
  8. java 导出word文件,支持导出表格和图片
  9. 已有项目如何添加到gitee(码云)仓库
  10. 单细胞测序流程(二)数据整理