首页 文章

计算prolog中术语中子项的出现次数

提问于
浏览
1

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

1 回答

  • 2
    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).
    

相关问题