首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog -如何打印列表

Prolog -如何打印列表
EN

Stack Overflow用户
提问于 2018-05-12 08:11:03
回答 1查看 944关注 0票数 0

我需要打印清单但我有麻烦了..。我有这样的事实:

代码语言:javascript
复制
processor('Intel Core i3 8100', 104, 'low_range')   .
processor('Ryzen 5 2400g', 135, 'middle_range').    
motherboard('Gigabyte Z370P D3', 98, 'low_range')   .
motherboard('Gigabyte GBT AX370M-DS3H', 70, 'middle_range').
.....
configuration(P, M, R, C, A, V, S, D, H, Price_range) :-
    processor(P, _Proc_price, Price_range),
    motherboard(M, _Motherboard_price, Price_range),
    ram(R, _Ram_price, Price_range),
    case(C, _Case_price, Price_range),
    ali(A, _Ali_price, Price_range),
    video_card(V, _Vga_price, Price_range),
    ssd(S, _Ssd_price, Price_range),
    monitor(D, _Monitor_price, Price_range),
    hdd(H, _Hdd_price, Price_range).

我通过findall函数过滤这些配置:

代码语言:javascript
复制
findall(P-M-R-C-A-V-S-D-H, configuration(P, M, R, C, A, V, S, D, H, T), Res),

我需要以这种方式打印Res元素:

代码语言:javascript
复制
configuration number 1
processor
motherboard
ram
case
ali
video card
ssd
monitor
hdd

configuration number 2
processor
motherboard
ram
case
ali
video card
ssd
monitor
hdd

....

configuration number N
processor
motherboard
ram
case
ali
video card
ssd
monitor
hdd

你能帮帮我吗?我不知道该怎么做

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-12 12:37:37

您可能希望使用forall/2而不是findall/3

forall(:Cond, :Action)对于Cond的所有可选绑定,动作都可以被证明。

例如:

代码语言:javascript
复制
forall(configuration(P, M, R, C, A, V, S, D, H, T),
    (writeln(configuration), writeln(P), writeln(M), ...)).

编辑:您可以这样做一个计数器:

代码语言:javascript
复制
:- dynamic(mycounter/1).
:- assertz(mycounter(0)).

incr_mycounter(X):-
    mycounter(X),
    retractall(mycounter(_)),
    succ(X,Y),
    assertz(mycounter(Y)).

像这样使用它:

代码语言:javascript
复制
forall(configuration(P, M, R, C, A, V, S, D, H, T),
    (incr_mycounter(N), writeln(configuration-N), writeln(P), writeln(M), ...)).
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50304170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档