如何将weatherInfo(X,Y)
与airDensity(X,Y)
合并,使其成为1个列表。如果可能,我希望它是这样的。
:- dynamic analize/3
outlook(Sunny).
outlook(Overcast).
outlook(Rain).
temperature(Hot).
temperature(Mild).
temperature(Cool).
humidity(Normal).
humidity(High).
windy(True).
windy(False).
weatherInfo(Sunny,Mild).
weatherInfo(Sunny,Cool).
weatherInfo(Overcast,Hot).
weatherInfo(Overcast,Mild).
weatherInfo(Overcast,Cool).
weatherInfo(Rain,Mild).
weatherInfo(Rain,Cool).
airDensity(Normal,False).
airDensity(Normal,True).
airDensity(High,False).
airDensity(High,True).
prediction(Result):-
analize([],[], _).
analize([H1|T1], [H2,T2], Result),
append(T1, [H2,T2], Result),
assertz([H1|T1], _, [H2,T2]),
Result =.. [[H1|T1], [H2,T2]),
write(L1, L2),
analize(NewT, NewL, Result).
我需要删除旧数据,但我不知道我应该去哪里做。是在追加之后还是在追加之前?
答案 0 :(得分:3)
一般性评论:Sunny
是一个变量,因此outlook(Sunny).
断言Sunny的任何值都是可以接受的。要获得有意义的信息,您需要outlook(sunny).
等
Q1:目前尚不清楚,为什么你要断言/收回条款,CapelliC指向findall的指针肯定是你需要的。
Q2:重新启动prolog解释器会清除您声明的事实。如果你想在一个会话中这样做,retractall/1可能派上用场(否则你需要单独收回每个事实)。