| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#1
| |||
| |||
| Hello, here is what I have done, basically, when I query valueEach([],_,[]). valueEach([H|T], Slot, [R|Rest]) :- value(H,Slot, V), !, % to skip execution of the next valueEach predicate, but the problem is it does not look for the alternative of value(indonesia, has_city, denpasar) in this query. R = [H,Slot,V], valueEach(T, Slot, Rest) |
|
#2
| |||
| |||
| You have to collect all value/3 for same first argument. valueEach([],_,[]). valueEach([H|T], Slot, Result) :- collectEach(H,Slot,[],L), valueEach(T, Slot, Rest), append(L,Rest,Result). collectEach(H,Slot,PartialL,L):- value(H,Slot,V), \+(member([H,Slot,V],PartialL) ), collectEach(H,Slot,[[H,Slot,V]|PartialL],L), !. collectEach(_H,_Slot,L,L). value(indonesia,has_city,jakarta). value(indonesia,has_city,denpasar). value(usa,has_city,new_york). ?- valueEach([indonesia,usa,india],has_city,L). Regards, Paul. |
|
#3
| |||
| |||
| On Jun 29, 10:31*pm, "fodor.p...@gmail.com" <fodor.p...@gmail.com> wrote: > You have to collect all value/3 for same first argument. > > valueEach([],_,[]). > valueEach([H|T], Slot, Result) :- > * collectEach(H,Slot,[],L), > * valueEach(T, Slot, Rest), > * append(L,Rest,Result). > > collectEach(H,Slot,PartialL,L):- > * value(H,Slot,V), > * \+(member([H,Slot,V],PartialL) ), > * collectEach(H,Slot,[[H,Slot,V]|PartialL],L), > * !. > collectEach(_H,_Slot,L,L). > > value(indonesia,has_city,jakarta). > value(indonesia,has_city,denpasar). > value(usa,has_city,new_york). > > ?- valueEach([indonesia,usa,india],has_city,L). > > Regards, > Paul. Thanks paul, I think that has solved my problem. |
![]() |
| Thread Tools | |
| Display Modes | |
In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.