gpt4 book ai didi

Prolog之谜(c,[a,b,c,d],Z)

转载 作者:行者123 更新时间:2023-12-02 07:20:46 25 4
gpt4 key购买 nike

我认为答案是 3,但我不确定,有人可以提供帮助吗?

假设在Prolog中输入以下两条语句:

mystery(X,[X|L],L).
mystery(X,[Y|L],[Y|M]) :- mystery(X,L,M).

如果 Prolog 给出以下目标,它会返回什么?

?- mystery(c,[a,b,c,d],Z).

最佳答案

因此,mystery/3 定义为:

mystery(X, [X|L], L).
mystery(X, [Y|L], [Y|M]) :- mystery(X, L, M).

(至少)有三种方式来看待神秘:

  1. 它采用一个元素X(第一个参数),在给定列表(第二个参数)中查找其是否存在,并返回同一列表,减去一个出现X(第三个参数)。因此:

    ?- mystery(c, [a, b, c, d], Z).
    Z = [a, b, d] ;
    fail.

    ?- mystery(c, [a, b, c, d, c], Z).
    Z = [a, b, d, c] ;
    Z = [a, b, c, d] ;
    fail.
  2. 另一种看待mystery的方法是,它检查构成第二个和第三个参数的列表是否仅在一个元素上不同,即第二个列表等于第三个列表,只不过它在一处多了一个附加元素。因此:

    ?- mystery(X, [a, b, c, d], [a, b]).
    fail.

    ?- mystery(X, [a, b, c, d], [a, b, c]).
    X = d ;
    fail.

    请注意,顺序很重要:

    ?- mystery(X, [a, b, c, d], [a, c, b]).
    fail.
  3. 最后,mystery 还可以生成第一个参数可以散布在第三个参数列表中的所有方式。因此:

    ?- mystery(d, Y, [a, b, c]).
    Y = [d, a, b, c] ;
    Y = [a, d, b, c] ;
    Y = [a, b, d, c] ;
    Y = [a, b, c, d] ;
    fail.

关于Prolog之谜(c,[a,b,c,d],Z),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1720895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com