gpt4 book ai didi

Prolog 逻辑纯度 : list of lists is not empty

转载 作者:行者123 更新时间:2023-12-02 19:37:41 25 4
gpt4 key购买 nike

我在 Prolog 中遇到问题。我只能在逻辑纯粹性(大学规则)中使用递归编程。

我想检查列表列表中的每个列表是否至少包含一个元素。例如:

[[0], [0], [0, s(0), 0], [s(0)]] -> valid

[[0], [], [0, s(0), 0], [s(0)]] -> not valid (because of the [])

所以我这样检查:

% Auxiliar Method 1

isList([]).
isList([_|Tail]) :-
isList(Tail).

% Auxiliar Method 2

listLength([], 0).
listLength([_|Tail], NumberOfElements) :-
listLength(Tail, NumberOfElementsRecursive),
NumberOfElements = s(NumberOfElementsRecursive).

% Auxiliar Method 3

moreThan(s(X), 0).
moreThan(s(X), s(Y)) :-
moreThan(X, Y).

% Real Method

listOfListOfListsNotEmpty([Head|Tail]) :-
isList(Head),
listLength(Head, N),
moreThan(N, 0),
listOfListOfListsNotEmpty(Tail).

我的问题是最后一次迭代。例如,如果我想检查这个:

listOfListOfListsNotEmpty([[0], [0]]).

迭代是这样的:

Iteration 1:
Head: [0]
Tail: [0], []

[0] has at least one element? yes

Iteration 2:
Head: [0]
Tail: []

[0] has at least one element? yes

Iteration 3:
Head: []
Tail:

[] has at least one element? no

如何忽略空列表的最后一次检查?

最佳答案

lls_nonempty([]).
lls_nonempty([[_|_]|Ess) :-
lls_nonempty(Ess).

关于Prolog 逻辑纯度 : list of lists is not empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60804560/

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