首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Prolog中的一个术语中获取原子变量列表

如何从Prolog中的一个术语中获取原子变量列表
EN

Stack Overflow用户
提问于 2017-05-08 13:42:26
回答 1查看 721关注 0票数 4

如何从一个术语中获取原子变量列表

例如:

代码语言:javascript
复制
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].

EN

回答 1

Stack Overflow用户

发布于 2017-05-10 05:22:30

这应该可以工作(顺便说一句,这是一个很好的问题):

代码语言:javascript
复制
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).

您的查询将是

代码语言:javascript
复制
?- variables((H-5)* (H-5)+ (K- -2)* (K- -2)- (H-3)* (H-3)- (K-4)* (K-4)=0,VL).
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43840503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档