gpt4 book ai didi

prolog - 如何定义整数列表

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

我遇到如下所示的问题。

定义整数列表如下:

  1. 空列表是一个整数列表
  2. 如果 L 是整数列表且 N 是整数,则 [N | L] 是一个整数列表
  3. 如果 L1 和 L2 是整数列表,那么 [L1 | L2 也是整数列表。 L2]。

编写一个 prolog 程序 integer_list(L),仅当 L 是整数列表时才满足。

我的程序无法实现第三个要求。有人可以指出我的错误吗?

int_list([]):-!.
int_list(L):-
is_list(L),
L=[X|Y],
check(L).
int_list(L):-
L=[L1|L2],
is_list(L1),
is_list(L2),
check(L1),
check(L2).


check([]):-!.
check([X|Y]):-
integer(X),
check(Y).

最佳答案

我认为你可以做得更简单,将检查扩展到接受整数列表:

int_list([]).
int_list([X|Xs]) :- check(X), int_list(Xs).

check([X|Xs]) :- check(X), int_list(Xs).
check(X) :- integer(X).

注意:尽量避免不必要的削减(即做出特定选择)。如果让 Prolog 模式匹配区分分支,代码将更容易理解,并且同样高效。

关于prolog - 如何定义整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928777/

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