gpt4 book ai didi

list - 列表的序言长度

转载 作者:行者123 更新时间:2023-12-01 07:29:56 25 4
gpt4 key购买 nike

如何计算列表的长度

?- size_sub([[b,a,g], [9,3,7,4], [6]],  X).
X = [3, 4, 1].

?- size_sub([[c,g,e,w], [7]], X).
X = [4, 1].

?- size_sub([], X).
X = [].

最佳答案

好的,您需要从基本情况开始,这是最后一个答案

所以size_sub([],X).如果 X=[] 为真所以首先你把它写成一个规则。

size_sub([],[]).

然后你需要做一个比前一个长一个列表的归纳步骤。我将假设您有一个 size/2 函数来确定单个列表的大小(如果没有,请发表评论)。

所以归纳步骤将对第一个参数的长度进行操作,所以 N->N+1。我们将通过去掉列表的头部来表示这一点,语法将是 [H|T]现在第二个参数(你的答案)将是 H 的长度,在 T 上调用 size_sub 的结果。由于我们无法在 header 中的参数中指定规则,我们将使用 N 来表示 H 的长度和 T2 来表示T 上 size_sub 的结果。

所以规则的第一部分变成 size_sub([H|T],[N|T2]):-
现在我们使用将断言 N 和 T2 的值的谓词。
size(H,N),
size_sub(T,T2).

把这一切放在一起你会得到
size_sub([],[]).

size_sub([H|T],[N|T2]):-
size(H,N),
size_sub(T,T2).

size/2 是一个简单得多的情况,遵循相同的 base + inductive 过程,您应该能够为其创建规则。如果您需要进一步的帮助,请发表评论。

** 编辑 - 要求尺寸/2 定义 **

定义大小/2

从基本情况开始,空列表的大小为 0。
size([],0).

现在是归纳步骤。 length(N+1) 的列表的大小是length(N) 的列表的大小。所以让我们将我们的列表定义为 [_|T]我已经使用 _ 来定义列表来表示头部,因为我们从不使用它,所以我们可以只使用匿名变量。让我们用 N 来表示 T 的长度,用 M 来表示 N+1。

所以

尺寸([_|T],M):-

现在让我们定义 N
  size(T,N),

最后断言 M 等于 N + 1
  M is N+1.

所以把所有东西放在一起
size([],0).

size([_|T],N):-
size(T,M),
N is M+1.

size_sub([],[]).

size_sub([H|T],[N|T2]):-
size(H,N),
size_sub(T,T2).

关于list - 列表的序言长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436614/

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