You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prolog中拆分奇偶列表并同时输出原列表?

解决Prolog中同时打印原列表、偶数列表和奇数列表的问题

你的even_odd/3谓词已经正确实现了列表奇偶元素拆分的逻辑,但它仅定义了原列表、偶数列表、奇数列表三者的关系,不会主动输出内容。要实现同时打印这三个列表,可通过以下两种方式:

方式一:查询时直接结合打印语句

在Prolog解释器中执行带打印逻辑的查询,示例如下:

?- List = [1,2,3,4,5], even_odd(List, Even, Odd), 
   write('原列表: '), write(List), nl,
   write('偶数列表: '), write(Even), nl,
   write('奇数列表: '), write(Odd), nl.

执行后输出:

原列表: [1,2,3,4,5]
偶数列表: [2,4]
奇数列表: [1,3,5]
true.

方式二:封装专门的打印谓词

定义一个整合拆分与打印逻辑的新谓词,比如print_even_odd/1:

print_even_odd(List) :-
    even_odd(List, Even, Odd),
    write('原列表: '), write(List), nl,
    write('偶数列表: '), write(Even), nl,
    write('奇数列表: '), write(Odd), nl.

查询时直接调用该谓词即可:

?- print_even_odd([1,2,3,4,5]).

输出结果与方式一一致。

说明:nl是换行谓词,用于分隔不同列表的输出;write/1负责输出指定内容,原even_odd/3不需要修改,只需基于它扩展打印逻辑。

内容的提问来源于stack exchange,提问作者aish 1352

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:25:28