如何从一个术语中获取原子变量列表
例如:
Term = (h-5)* (h-5)+ (k- -2)* (k- -2)- (h-3)* (h-3)- (k-4)* (k-4)=0,
get_variables(Term, Var_list).对于上面的术语,答案是Var_list = [h,k].
发布于 2017-05-10 05:22:30
这应该可以工作(顺便说一句,这是一个很好的问题):
variables(T,V):-
variables(T,[],V1),
sort(V1,V).
variables(T,Acc,[T|V]):-
var(T), !,
variables(Acc,[],V).
variables([],[],[]).
variables([],Acc,V):-
variables(Acc,[],V).
variables([H|T],Acc,V):-
append(T,Acc,NewAcc),
variables(H,NewAcc,V).
variables(T,Acc,V):-
atom(T),
variables(Acc,[],V).
variables(T,Acc,V):-
T=.. [_F|AL],
variables(AL,Acc,V).您的查询将是
?- variables((H-5)* (H-5)+ (K- -2)* (K- -2)- (H-3)* (H-3)- (K-4)* (K-4)=0,VL).https://stackoverflow.com/questions/43840503
复制相似问题