【问题标题】:Counting occurrences of a subterm in a term in prolog在序言中计算一个术语中子术语的出现次数
【发布时间】:2014-10-26 19:25:46
【问题描述】:

我正在尝试在 prolog 中编写一个名为 occurrences(Sub, Term, N) 的谓词,如果 NTermSub 的出现次数,它将返回 true。我正在使用 SWI-prolog,我发现 built-in predicate called contains_term(Sub, Term) 如果 Sub 包含在 Term 中,则这是真的。所以我正在尝试计算contains_term 为真的次数,并使其成为出现谓词中的N。问题是我不太确定如何做到这一点,而contains_term 的事实是预定义的谓词使其更难弄清楚。任何帮助将不胜感激。

【问题讨论】:

  • 您的链接页面有一个occurrences_of_term 谓词。你不能用那个吗?

标签: prolog


【解决方案1】:
term_subterm_n(T, S, N) :-
   bagof(t, term_subterm(T,S), Ts),
   length(Ts, N).

term_subterm(T, T).
term_subterm(T, S) :-
   compound(T),
   T =.. [_|Es],
   member(E, Es),
   term_subterm(E, S).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多