写入谓词计数(Name, count)来计算给定名称在家族成员列表中出现的次数



我做了任务2和3,但我不能做任务1。Сan你帮我吧。在Prolog程序中,给出了关系family_info(Family,成员)关于家庭成员(family -家庭成员的名字,Members -家庭成员的名字列表)。

  1. 写入谓词计数(Name, count)来计算出现的次数在家庭成员名单上的名字。第一个任务必须使用动态Prolog数据库执行,不涉及列表生成预谓词和聚合库;
family_info(family1, [name1, name2, name3]).
family_info(family2, [name4, name5]).
family_info(family3, [name1, name2]).
family_info(family4, [name6, name7, name8]).
family_info(family5, [name1]).
family_info(family6, [name9, name10]).
family_info(family7, [name5, name6, name7]).
family_info(family8, [name1, name2, name3, name4]).
family_info(family9, [name4, name5, name6]).
family_info(family10, [name5, name6, name7, name8]).

可以用老办法数数:

reset_count :-
    retractall(count(_)),
    assert(count(0)).
    
inc_count :-
    count(N),
    N1 is N + 1,
    retract(count(N)),
    assert(count(N1)).

结果swi-prolog:

?- reset_count.
?- inc_count.
?- inc_count.
?- count(N).
N = 2.

最新更新