【发布时间】:2019-11-10 01:20:45
【问题描述】:
任务:众所周知,独角兽会在周一、周二和周三撒谎,并在一周中的所有其他日子说真话。他可以说:“昨天我撒了谎。明天之后,我会连续躺两天。 ” 确定谈话的日期。
我草拟了代码,但不知道怎么说独角兽连续两天撒谎,更正代码,先谢谢了。
yesterday(mon, sun).
yesterday(tue, mon).
yesterday(wed, tue).
yesterday(thu, wed).
yesterday(fri, thu).
yesterday(sat, fri).
yesterday(sun, sat).
lies([mon, tue, wed]).
tomorrow(Day, Tomorrow) :-
yesterday(Tomorrow, Day).
unicornLies1(Day) :-
lies(Days),
member(Day, Days).
unicornLies2(Day) :-
tomorrow(Day, Tomorrow),
unicornLies1(Day),
unicornLies1(Tomorrow).
sol:- unicornLies1(Day), unicornLies2(Day), write(Day).
【问题讨论】:
-
这是 zebra-puzzle 的一个简单实例,因此没有理由删除该标签。
标签: prolog zebra-puzzle