gpt4 book ai didi

list - Prolog:通过read/1向列表添加元素

转载 作者:行者123 更新时间:2023-12-03 00:03:50 25 4
gpt4 key购买 nike

我正在尝试使用 add_read_list/2 将用户输入添加到列表中,直到单词“end”。遇到。输出应该是这样的:

add_read_list(Resultlist, [a,b]).
|: c.
|: d.
|: e.
|: f.
|: end.
Resultlist = [f,e,d,c,a,b].

这就是我已经走了多远:

 add_read_list(Resultlist,Entrylist) :- 
read(end), append([], Entrylist, Resultlist).
add_read_list(Resultlist, Entrylist) :-
read(Input), append([Input], Entrylist, X),
add_read_list(Resultlist, X).

但是这样每隔一个输入就会被跳过:

add_read_list(Resultlist, [a,b]).
|: c.
|: d.
|: e.
|: f.
|: end.
Resultlist = [f,d,a,b].

我做错了什么?

最佳答案

删除第一个子句,并使用简单的“if/then/else”结构:

add_read_list(Resultlist, Entrylist) :-
read(Input),
( Input = end
-> reverse(Resultlist, Entrylist)
; add_read_list(Resultlist, [Input|Entrylist])
).

不是附加读取的每个项目,而是对其进行“cons”,并在完成后反转完整列表(好吧,只需统一以后进先出的方式获取列表,这似乎是必需的。即而不是 reverse(Resultlist, Entrylist) , 结果列表 = 条目列表)

关于list - Prolog:通过read/1向列表添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27342014/

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