一个逻辑问题_张村说谎李村不说谎

这是一道有趣的逻辑题,涉及张村和李村的村民,他们在特定日子说谎。题目中,两村村民都声称前天是他们的说谎日。通过分析村民的说谎模式,可以推断今天可能是星期三。代码实现进一步验证了这个问题,当lieArray的最后一个元素设为false时,结果依然成立。讨论可在优快云论坛的指定主题找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在论坛里看到一个逻辑题, 回答的人很多, 自己也试了下.

挺有意思的.

问题如下,

有两个村,张村和李村
张村的人星期一三五说谎
李村的人星期二四六说谎

一人问,今天周几?结果两个村的人都回答“前天是我说谎的日子”

问:今天是周几?

代码如下

public class TestLie {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday",
				"Friday", "Saturday", "Sunday"};
		boolean[] lieArray_zhang = {true, false, true, false, true, false, true};
		boolean[] lieArray_li = {false, true, false, true, false, true, true};
		Person zhang3 = new Person("zhang3", lieArray_zhang);
		Person li4 = new Person("li4   ", lieArray_li);

		for (int i = 0; i < 7; i++) {
			System.out.println("Today is " + days[i]);
			zhang3.say(i);
			li4.say(i);
		}

	}

}

class Person {
	String name;
	boolean[] lieArray;

	public Person(String name, boolean[] lieArray) {
		this.name = name;
		this.lieArray = lieArray;
	}

	public void say(int day) {
		int f = (day + 5) % 7;
		if (lieArray[day]) {
			// today is lie day
			if (lieArray[f]) {
				System.out.println("    " + name
						+ " : The day before yesterday I not lay.");
			} else {
				System.out.println("    " + name
						+ " : The day before yesterday I lay.");
			}
		} else {
			// today is not lie day
			if (lieArray[f]) {
				System.out.println("    " + name
						+ " : The day before yesterday I lay.");
			} else {
				System.out.println("    " + name
						+ " : The day before yesterday I not lay.");
			}
		}
	}
}

其中周日没有特别说明是都说谎还是都不说谎, 但是对结果没有影响

可以修改lieArray的最后一个为false试试看

以上代码结果如下

Today is Monday
    zhang3 : The day before yesterday I lay.
    li4    : The day before yesterday I lay.
Today is Tuesday
    zhang3 : The day before yesterday I lay.
    li4    : The day before yesterday I not lay.
Today is Wednesday
    zhang3 : The day before yesterday I not lay.
    li4    : The day before yesterday I not lay.
Today is Thursday
    zhang3 : The day before yesterday I not lay.
    li4    : The day before yesterday I not lay.
Today is Friday
    zhang3 : The day before yesterday I not lay.
    li4    : The day before yesterday I not lay.
Today is Saturday
    zhang3 : The day before yesterday I not lay.
    li4    : The day before yesterday I not lay.
Today is Sunday
    zhang3 : The day before yesterday I not lay.
    li4    : The day before yesterday I lay.


论坛地址

http://bbs.youkuaiyun.com/topics/390294090

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值