如何删除序言列表中的字符类型?

发布于 2025-01-18 09:20:16 字数 308 浏览 0 评论 0原文

我是新手学习prolog的新手,我想实现以下谓词,

这是我


onlyinteger(List,New):-
    flatten(List,Fla),
    member(X,Fla),
    string(X),
    delete(X,Fla,New).

onlyinteger([[5, 'A'], [5, 'B'],[1,'A'],[3,'C'],[7,'D']],X). -- input

想要的代码,

x = [5,5,1,3,7]。

I‘m new to learn prolog, I want to fulfill the predicate below,

this is my code


onlyinteger(List,New):-
    flatten(List,Fla),
    member(X,Fla),
    string(X),
    delete(X,Fla,New).

onlyinteger([[5, 'A'], [5, 'B'],[1,'A'],[3,'C'],[7,'D']],X). -- input

what I want,

X = [5,5,1,3,7].

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

霓裳挽歌倾城醉 2025-01-25 09:20:17
% Base case, reached at the end of the loop
only_integer([], []).
% Add the integer to the output list
only_integer([[Int, _Char]|Tail], [Int|LstInt]) :-
    % Loop
    only_integer(Tail, LstInt).

swi-prolog 中的结果:

?- time(only_integer([[5, 'A'], [5, 'B'],[1,'A'],[3,'C'],[7,'D']],X)).
% 6 inferences, 0.000 CPU in 0.000 seconds (82% CPU, 187137 Lips)
X = [5,5,1,3,7].
% Base case, reached at the end of the loop
only_integer([], []).
% Add the integer to the output list
only_integer([[Int, _Char]|Tail], [Int|LstInt]) :-
    % Loop
    only_integer(Tail, LstInt).

Result in swi-prolog:

?- time(only_integer([[5, 'A'], [5, 'B'],[1,'A'],[3,'C'],[7,'D']],X)).
% 6 inferences, 0.000 CPU in 0.000 seconds (82% CPU, 187137 Lips)
X = [5,5,1,3,7].
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文