斑马问题

试求解下面这个由爱因思坦提出的著名难题(也称斑马问题)。 5个不同国家且工作各不相同的人分别住在一条街上的5所房子里,每所房子的颜色不现,每个人都有自己养的宠物,喜欢喝不同的饮料。根据以下提示,你能告诉多哪个房子里的人养斑马(zebra),哪个房子里的人喜欢喝矿泉水吗。

  英国人住在红色的房子里,西班牙人养了一条狗。日本人是油漆工。意大利人喜欢喝茶。挪威人住在左边的第一房子里。 绿色房子在白房子的左边。摄影师养了一只蜗牛。外交官住在黄色的房子里。中间房子里的那个人喜欢喝牛奶。养狐狸的人住的房子与医生的房子相邻。养马的人所住的房子与外交官的房子相邻。(提示绘一张表,其中行表示每个人,列表示每个人所住的房子的颜色、他们的工作他们所养的宠物以及他们喜欢喝的饮料,用逻辑推理来判断表中正确的项。)

解:1. 以房子的顺序为顺序排表(且规定从上到下的顺序等同于从左到右)。根据“挪威人住在左边的第一个房子”、“挪威人住在蓝色房子旁边”和“中间房子里的人喜欢喝牛奶”这三条条件可以得出一个基本表:

  国籍 房子的颜色 工作  所养宠物 喜欢喝的饮料 备注
1 挪威(挪威人住在左边的第一个房子)          
 2   蓝色(挪威人住在蓝色的房子旁边)        
 3         牛奶(中间房子里的人喜欢喝牛奶)  
           
 5            

2. 检查其中的一些捆绑条件:根据绿色房子在白色房子右边的条件,可以确定1和3不是绿色或白色,所以绿色房子只有两种可能:要么是是4,要么是5;

2.1 假设序号4是绿色房子,那么序号3是白色房子如下图:

  国籍 房子的颜色 工作  所养宠物 喜欢喝的饮料 备注
1 挪威(挪威人住在左边的第一个房子)  黄色  外交官(外交官住在黄房子里)    矿泉水  
 2  意大利 蓝色(挪威人住在蓝色的房子旁边)    马(养马的人与外交官相邻)  茶(意大利人喜欢喝茶)  
 3    白色(绿色房子在白色房子右边)     牛奶(中间房子里的人喜欢喝牛奶)  
   绿色(假设)      咖啡(喜欢喝咖啡的人住在绿色的房子里)  
 5  英国人  红色(英国人住在红色的房子里)  小提琴    桔汁(小提琴家喜欢喝桔汁)  

2.1.1 假设3为日本人:

  国籍 房子的颜色 工作  所养宠物 喜欢喝的饮料 备注
1 挪威(挪威人住在左边的第一个房子)  黄色  外交官(外交官住在黄房子里)    矿泉水  
 2  意大利 蓝色(挪威人住在蓝色的房子旁边)  ????  马(养马的人与外交官相邻)  茶(意大利人喜欢喝茶)  
 3  日本  白色(绿色房子在白色房子右边)  油漆工   牛奶(中间房子里的人喜欢喝牛奶)  
 西班牙  绿色(假设)  ????  狗  咖啡(喜欢喝咖啡的人住在绿色的房子里)  
 5  英国人  红色(英国人住在红色的房子里)  小提琴    桔汁(小提琴家喜欢喝桔汁)  

由于“摄影师养了一只蜗牛”在此表中,无法填写,所以4假定为绿色,3假定为日本人不正确。

2.1.2假定4为日本人:

  国籍 房子的颜色 工作  所养宠物 喜欢喝的饮料 备注
1 挪威(挪威人住在左边的第一个房子)  黄色  外交官(外交官住在黄房子里)    矿泉水  
 2  意大利 蓝色(挪威人住在蓝色的房子旁边)    马(养马的人与外交官相邻)  茶(意大利人喜欢喝茶)  
 3  西班牙  白色(绿色房子在白色房子右边)    狗 牛奶(中间房子里的人喜欢喝牛奶)  
 日本  绿色(假设)  油漆工    咖啡(喜欢喝咖啡的人住在绿色的房子里)  
 5  英国人  红色(英国人住在红色的房子里)  小提琴    桔汁(小提琴家喜欢喝桔汁)  

由于“摄影师养了一只蜗牛”在此表中,无法填写,所以4假定为绿色,4假定为日本人不正确。

2.2假设序号5是绿房子,那么序号4是白房子,如下图:

  国籍 房子的颜色 工作  所养宠物 喜欢喝的饮料 备注
1 挪威(挪威人住在左边的第一个房子)  黄色  外交官(外交官住在黄房子里)      
 2   蓝色(挪威人住在蓝色的房子旁边)    马(养马的人所住的房子与外交官相邻)    
 3  英国人  红色(英国人住在红色的房子里)     牛奶(中间房子里的人喜欢喝牛奶)  
    白色(绿色房子在白色房子右边)        
 5    绿色(假设)      咖啡(喜欢喝咖啡的人住在绿色的房子里)  

2.2.1 假设4是小提琴家,则

  国籍 房子的颜色 工作  所养宠物 喜欢喝的饮料 备注
1 挪威(挪威人住在左边的第一个房子)  黄色  外交官(外交官住在黄房子里)  狐狸  矿泉水  
 2  意大利 蓝色(挪威人住在蓝色的房子旁边)  医师  马(养马的人所住的房子与外交官相邻)  茶(意大利人喜欢喝茶)  
 3  英国人  红色(英国人住在红色的房子里)  摄影师  蜗牛 牛奶(中间房子里的人喜欢喝牛奶)  
西班牙   白色(绿色房子在白色房子右边)  小提琴家  狗  桔汁(小提琴家喜欢喝桔汁)  
 5  日本  绿色(假设)  油漆工  斑马  咖啡(喜欢喝咖啡的人住在绿色的房子里)  

所以,日本人养了一只斑马;挪威人喜欢喝矿泉水。

时间: 2024-10-29 05:17:43

斑马问题的相关文章

【求助】关于.NET(C#)调用斑马打印机(ZDesigner GK888t (EPL))换页时退纸的问题

有解决过类似问题的大神请留步,救救我吧.-------分割-------最近在做一个快递标签打印系统,使用.NET(C#)调用斑马打印机[ZDesigner GK888t (EPL)]进行打印,程序实现的是连续打印,但实际打印机却是打一张,停一下,退一点纸,然后下一张,再停一下,...依此类推.因为是大批量的标签,所以这个间隔不能忍受,尝试了各种打印机属性和选项的设置都没有用.百度看到有人说换成海鸥的驱动,测试后果然不再中间停顿,但业务方不是很接受这个方案(机器较多,换驱动的工作量也蛮大的),没

C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)

在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇到了怎么打印的问题. 一种办法是用标签设计软件做好模板,在标签设计软件中打印,这种办法不用写代码,但对我来说觉得不能接受,所以尝试代码解决问题. 网上搜索一番,找不到什么资料,基本都是说发送ZPL.EPL指令到打印机,而且还是COM/LPT口连接打印机.后来研究.net的打印类库,发现是用绘图方式打印至打印机的,也叫GDI打印,于是思路有了点突破,那我可以用报表工具画好标签,运行报表时,把结果输出位图,再发送至

基于C#在WPF中使用斑马打印机进行打印【转】

原文链接:http://ju.outofmemory.cn/entry/132476 最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来.苦苦折腾了两天,总算有所收获,就发到网上来骗骗分数-_-|| 项目中使用的打印机型号为GX430t的打印机,接手的时候,自己对于打印机这块儿是眼前一抹黑,啥都不知道.没办法一步步来. 首先尝试使用WPF中的PrintDialog里面的PrintVisual和PrintDocument方法,打印机是一点反应都没有,最后得到的结论是:

用CSS完成斑马条纹表单

今天学习了<table> <th> <tr> <td> 标签的用法,下面用HTML和CSS来画一个简单的斑马条纹表单,让表单更好看 示例代码:zebra.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML CSS Exercise CSS3 Zebra Striping a Table<

斑马斑马

他讲的是一个流浪的人爱上了一个被别人伤害过的姑娘,可是他却没有能力去安慰心爱的姑娘,也没能力去给她想要的东西, 表达了爱上一个不爱自己的人的痛苦和无奈,同时也表达了他假设的这个繁华都市的现实, 一个繁华又现实的城市,一个高贵美丽的姑娘,一个居无定所的人,姑娘只属于这个城市, 而这个城市却没有什么会来挽留我,所以我要离开这里.就像我来的时候一样,还是一无所有的离开,除了我的吉他. 斑马斑马 你不要睡着啦再给我看看你受伤的尾巴我不想去触碰你伤口的疤我只想掀起你的头发 心爱的姑娘,我多么希望你值得我是

基于C#在WPF中使用斑马打印机进行打印

最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来.苦苦折腾了两天,总算有所收获,就发到网上来骗骗分数-_-|| 项目中使用的打印机型号为GX430t的打印机,接手的时候,自己对于打印机这块儿是眼前一抹黑,啥都不知道.没办法一步步来. 首先尝试使用WPF中的PrintDialog里面的PrintVisual和PrintDocument方法,打印机是一点反应都没有,最后得到的结论是:斑马打印机不支持MS的XPS文档格式,所以使用WPF来排版后进行驱动打印就不要想了,不

斑马打印机客户端GET和POST,以及后端两种打印方式。

背景环境:打印机安装在客户端外网.当用户登录时,通过ajax取服务器数据,返回打印机命令,然后客户端通过JS发送给斑马打印机. 1.使用Get方式打印 1.1 前端页面js代码 jQuery(function () { $("#btnRePrint").click(function () { //var cartonId = "450002241530221"; var cartonId = ""; if ($("input[name=

文本行的斑马条纹

周知,表格的斑马条纹只需简单的运用伪类 :nth-child()/:nth-of-type()来处理就好了: tr:nth-child(even){ background-color: rgba(0,0,0,.2); } 但是把这种效果运用在文本行的时候就有点力不从心了,尽管js可以实现这种功能,但是这在理论上有违纯粹原则(javascript不应该掺合到样式层面来), 而且过多的DOM元素还会拖累整个页面的性能. 解决方案: <div class="content"> 原

【table】给table表格设置一个通用的css3样式(默认有斑马条纹)

/* = 表格(默认有斑马条纹) ------------------------------------------ */ .data-table { margin: 10px 0; } .data-table table { width: 100%; border-collapse: collapse; //设置表格边框合并为单一边框 } .data-table caption { height: 30px; line-height: 30px; font-weight: 700; } .d