level 1
某个旅游团去西藏旅游,除拉萨市之外,还有6个城市或景区可供选择,E市、F市、G湖、H山、I峰、J湖。考虑时间、经费、高原环境、人员身体状况等因素, (1)G湖和J湖中至少要去一处。
(2)如果不去E市或者不去F市,则不能去G湖游览。 (3)如果不去E市,也就不能去H山游览。 (4)只有越过I峰,才能到达J湖。
如果由于气候原因,这个团队不去I峰,则他们肯定去哪里旅游
2015年12月16日 02点12分
1
level 13
程序
trip(g).
trip(e):-trip(g);
trip(f):-trip(g).
trip(h):- trip(e).
trip(j):- trip(i).
travel([]).
travel([Head|Tail]):-
trip(Head),
write(Head),
travel(Tail).
travel([Head|Tail]):-
not trip(Head),
travel(Tail).
加载后
?- travel([e,f,g,h,i,j]).
g
yes
2017年03月19日 14点03分
2
初学者,写得马马虎虎
2017年03月19日 14点03分
level 13
学了一个月后,觉得之前的写得不对,应该这样:
%(1)G湖和J湖中至少要去一处。
goto(j):-
nogoto(g).
goto(g):-
nogoto(j).
%(2)如果不去E市或者不去F市,则不能去G湖游览
goto(e):-
goto(g).
goto(f):-
goto(g).
%(3)如果不去E市,也就不能去H山游览。
nogoto(h):-
nogoto(e).
goto(e):-
goto(h).
%(4)只有越过I峰,才能到达J湖
nogoto(j):-
nogoto(i).
%由于气候原因,这个团队不去I峰
nogoto(i).
%则他们肯定去哪里旅游
mustgoto(X):-
\+ nogoto(X).
nogoto(X):-
\+ goto(X).
trip([]):-!.
trip([H|T]):-
mustgoto(H),
write(H),write(' '),
trip(T).
trip([H|T]):-
nogoto(H),
trip(T).
运行后输入:
trip([e,f,g,h,i,j]).
结果:
e f g
yes
2017年04月14日 06点04分
3
虽然程序通过了但mustgoto这部分我也不知道为什么要这样写
2017年04月16日 05点04分