小编Dim*_*pov的帖子

使用not设置Intersection谓词Prolog

我正在尝试构建一个简单的谓词,它将两个列表作为输入,结果是由前两个列表的交集组成的第三个.我决定使用逻辑陈述.我很确定我的逻辑是正确的,但我的谓词不起作用.有任何想法吗?:

element(X,[H|T]) :- 
      X=H
   ;
      element(X,T).

intersection(L1,L2,R) :-
    not((
        element(A,L1),
        not(element(A,L2))
    )),
    not((
        element(A,L1),
        not(element(A,R))
    )).
Run Code Online (Sandbox Code Playgroud)

请不要发布替代方法我想知道为什么每次都返回FALSE.

prolog

15
推荐指数
3
解决办法
707
查看次数

Prolog - 在回溯上生成交替符号:[a]; [A,B].[A,B,A]; [A,B,A,B]

我已经把我的思绪包裹了很多,无法理解.是否可以使用回溯生成以这种格式生成列表的脚本:

[a]
[a,b]
[a,b,a]
[a,b,a,b]
...
Run Code Online (Sandbox Code Playgroud)

我已经制作了一个一次生成两个元素但我的头开始受伤试图制作一个产生"a",下一次"b"和下一个"a"等等.

这是一次两个元素的脚本:

ab([a]).
ab([b,a|T]):-ab([a|T]).
ab([a,b|T]):-ab([b|T]).
Run Code Online (Sandbox Code Playgroud)

list prolog dcg

6
推荐指数
1
解决办法
127
查看次数

标签 统计

prolog ×2

dcg ×1

list ×1