一个逻辑题(今天星期几)引发的思考

题目如下,代码如下,希望各路大神不吝赐教。

  某地有两个奇怪的村庄,张庄的人在星期一、三、五说谎,李村的人在星期二、四、六说谎。在其他日子他们说实话。

一天,外地的王从明来到这里,见到两个人,分别向他们提出关于日期的题。两个人都说:”前天是我说谎的日子。”

如果被问的两个人分别来自张庄和李村,那么这一天是星期几?

  下面是有遍历的方式,自我感觉不是很好,不知道能不能从逻辑推导的方式获取最后的结果。

 1 package jiang.test;
 2 /**
 3  * 某地有两个奇怪的村庄,张庄的人在星期一、三、五说谎,李村的人在星期二、四、六说谎。在其他日子他们说实话。
 4  * 一天,外地的王从明来到这里,见到两个人,分别向他们提出关于日期的题。两个人都说:”前天是我说谎的日子。”
 5  * 如果被问的两个人分别来自张庄和李村,那么这一天是星期几?
 6  * @author Administrator
 7  *
 8  */
 9 public class WhatDay {
10
11     public static void main(String[] args) {
12         boolean isLay = true;
13         for(int beYes = 1;beYes <= 7;beYes++){
14             int today = (beYes+2)%7;
15             String ZhangZhang = "zhang";
16             String LiCun =  "li";
17             if(isRight(ZhangZhang,beYes,isLay)&&isRight(LiCun,beYes,isLay)){
18                 System.err.println("这一天是星期"+today);
19             }
20         }
21     }
22     /**
23      * 逻辑是否正确,正确就返回true
24      * @param user
25      * @param beYes
26      * @param isLay
27      * @return
28      */
29     public static boolean isRight(String user,int beYes,boolean isLay){
30         int today = (beYes+2)%7;
31         boolean belay = isLying(user,beYes);
32         boolean lay = isLying(user,today);
33         if(lay&&!belay==isLay){
34             return true;
35         }else if(!lay&&belay==isLay){
36             return true;
37         }else
38             return false;
39     }
40     /**
41      * 是否说谎
42      * @param user
43      * @param day
44      * @return
45      */
46     public static boolean isLying(String user,int day){
47         if(user.equals("zhang")){
48             if(day==1||day==3||day==5)
49                 return true;
50         }else if(user.equals("li")){
51             if(day==2||day==4||day==6)
52                 return true;
53         }
54         return false;
55     }
56 }
时间: 2024-10-09 07:42:55

一个逻辑题(今天星期几)引发的思考的相关文章

iOS面试的一个逻辑题

一个同行的朋友前往某公司面试,在笔试的最后一题,出了这么一个问题:(分值为20分) 一个很古老的村子,这个村子的人分两种,红眼睛和蓝眼睛,这两种人并没有什么不同,小孩在没生出来之前,没人知道他是什么颜色的眼镜,这个村子中间有一个广场,是村民们聚集的地方,现在这个村子有三个人,分住三处,在这个村子,有一个规定,就是如果一个人能知道自己眼睛的颜色并且在晚上自杀的话,他就会升入天堂,这三个人不能够用语言告诉对方眼睛的颜色,也不能用任何方式提示对方的眼睛是什么颜色,而且也不能用镜子,水等一切有反光的物质

2014百度之星资格赛 1001:Energy Conversion(水题,逻辑题)

Energy Conversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4278    Accepted Submission(s): 1024 Problem Description 魔法师百小度也有遇到难题的时候-- 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的

iOS一个&#39;initWithRequest:delegate:&#39; is deprecated: first deprecated in iOS 9.0 - Use NSURLSession (see NSURLSession.h) Warning引发的思考

Warning 如上图所示 源代码片段为 - (void)loadWebRequest:(id)sender { NSURL *url=[NSURL URLWithString:@"http://localhost:8080/getAllStudent"]; NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"GET"]; NS

腾讯算法逻辑题

前几天小生去了一趟腾讯,接受前端大大的虐待. 整个过程充斥着各种血与泪,特别是他们的算法逻辑题,让我甚是上心.遂mark下,以求甚解... 经过一番思考以及和小伙伴们的共同探索,总算代码的运行结果是符合题目要求了,不过也不确定是否是最佳答案... 且不管了,如果知道有更好的答案再更新便是.. 有人也许会说,骚年,你这样把题目发出来真的好吗?这样不担心是个人都有种去企鹅面前装13吗? 那么我可以很负责任的说,这几道题只是餐前小菜.真正的风浪在后头,假如谁天真的以为有了这几道题就稳了,小心被人当猴看

逻辑题逻辑思维题

75道逻辑思维题-------会作10道智商就是正常,会作30道就不是凡人,会作60道就是高智商稀有人才了! [1]假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. [2]周雯的妈妈是豫林水泥厂的化验员. 一天,周雯来到化验室做作业.做完后想出去玩. "等等,妈妈还要考你一个题目,"她接着说,"你看这6只做化验用的玻璃杯,前面3只盛满了水,后面3只是空的.你 能只移动1只玻璃杯,就便盛满水的杯子和空杯子间隔

逻辑题:猜年龄

在CSDN程序人生微信公众号里,发了一道逻辑题,觉得挺有意思,特地拿出来,分享一下. 题目:某公司的两位科学家(甲.乙)去吃饭,坐在一家酒店靠近街道的窗口座位吃饭,在等待上菜的过程中,闲极无聊,甲向乙出了一道猜三个女儿年龄的题目. 甲:我有3个女儿,3人年龄之积等于36: 乙:猜不出来: 甲:3个女儿年龄之和等于街道上的行人数: 乙:还是无法确定: 甲:我的大女儿叫苏珊. 乙:哦,我知道了. 请问:甲的3个女人年龄各是多少? 分析: 共有3个条件,根据条件1,3人年龄之积等于36,因此可能有如下

前端面试常见逻辑题收集及分析

前端面试中常出现一些有趣的逻辑题,初见的时候有可能会手足无措,但实际多看几个题之后就会有一定的思考逻辑,有种打通任督二脉的感觉.以下是我个人面试经历以及网络上收集来的一些经典题目. 题目: 1.现有一个装有无限水的池塘,你手里有两个空壶,一个容积为6升,一个为5升,请问你如何用这两个空壶打3升水?请写出具体步骤(腾讯) 2.有一个烤肉架,它能同时烤两块肉,已知每块肉完全烤熟一面需要5分钟,请问用这个烤肉架烤熟三块肉最快是多少时间?(腾讯) 3.现有A.B两辆汽车相隔一段距离,它们之间有一只小鸟,

笔试逻辑题

笔试逻辑题 1 平均需要抛掷多少次硬币,才会首次出现连续两个正面? https://blog.csdn.net/tianxiajianling/article/details/7458560 2 某大公司有这么一个规定:只要有一个员工过生日,当天所有员工全部放假一天.但在其余时候,所有员工都没有假期,必须正常上班.这个公司需要雇用多少员工,才能让公司一年内所有员工的总工作时间期望值最大? 假设一年恒定365天,每个员工的生日都概率均等地分布在这365天里. 对E求导,得到n约等于365. 3 两

cat /proc/cpuinfo 引发的思考--CPU 物理封装-物理核心-逻辑核心-超线程之间关系

CPU的物理封装,一个物理封装使用独立的一个CPU物理插槽,共享电源和风扇: CPU物理核心:在一个物理封装中封装了多个独立CPU核心,每一个CPU核心都有自己独立的完整硬件单元. CPU逻辑核心:一个CPU物理核心对外表现为多个独立的外部CPU接口,称这种每一个CPU接口为一个逻辑核心.其内部可能共享运行单元和缓存等. CPU逻辑核心是超线程技术下的产物,假设没有超线程技术,有多少颗物理CPU核心,OS就觉得有多少颗CPU.OS是根据CPU的外部接口来识别CPU数据,而不是根据CPU的实际内部