gpt4 book ai didi

list - 我应该如何删除列表中的非数字使用 prolog

转载 作者:行者123 更新时间:2023-12-04 08:17:08 24 4
gpt4 key购买 nike

我应该删除列表中所有不是数字大于数字的元素。我可以只用数字来解决它。但是当列表有一些符号时,我应该如何删除。这是我的代码

greater_nrs_only( X, List, Ans) :-
greater_nrs_only( X, List, Ans, [] ), !.

greater_nrs_only( _, [], Ans, Ans).
greater_nrs_only( X, [H | Tail], Ans, Acc ) :-
(
( H < X, NewEl = [] )
;
( H >= X, NewEl = [H] )
),
append( Acc, NewEl, NewAcc ),
greater_nrs_only( X, Tail, Ans, NewAcc).
和 ?- Greater_nrs_only(6, [ ], X)。
是假的

最佳答案

这会出错的原因是因为 H本身不是一个数字,所以比较 6a例如会引发错误。您可以使用 number/1 [swi-doc]检查某物是否是数字。
除了手动过滤,您还可以使用 include/3 [swi-doc] , 筛选满足给定谓词的项目的列表:

greater_than(X, Y) :-
number(Y),
X < Y.

greater_nrs_only(X, L, R) :-
include(greater_than(X), L, R).

关于list - 我应该如何删除列表中的非数字使用 prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65658118/

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