一個邏輯題(某地有兩個奇怪的村庄,張庄的人在星期一、三、五說謊,李村的人在星期二、四、六說謊。在其他日子他們說實話。)引發的思考


題目如下,代碼如下,希望各路大神不吝賜教。

  某地有兩個奇怪的村庄,張庄的人在星期一、三、五說謊,李村的人在星期二、四、六說謊。在其他日子他們說實話。

一天,外地的王從明來到這里,見到兩個人,分別向他們提出關於日期的題。兩個人都說:”前天是我說謊的日子。” 

如果被問的兩個人分別來自張庄和李村,那么這一天是星期幾? 

   下面是有遍歷的方式,自我感覺不是很好,不知道能不能從邏輯推導的方式獲取最后的結果。

 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM