【发布时间】:2017-10-01 12:20:40
【问题描述】:
我正在尝试编写一个谓词randomnames/1,它会生成一个包含三个不同名称的随机列表。这些名称在数据库中,我已经有了一个随机名称的谓词:
name(1, Mary).
name(2, Pat).
name(3, James).
name(4, Bob).
name(5, Susan).
random_name(Name):-
random(0, 6, N),
name(N, Name).
为了在列表中得到这个,有人建议我应该这样做:
random_names([A,B,C]) :-
random_name(A),
random_name(B),
random_name(C).
唯一的问题是在生成的列表中可能会出现重复项。我不知道如何解决这个问题。我可以编写一个新的谓词来删除重复项,但是我如何将重复项替换为另一个变量,以便列表仍然具有三个元素?当random_names 谓词中没有明确的头尾时,我什至如何编写删除谓词?
【问题讨论】:
标签: prolog