【发布时间】:2019-08-26 16:56:51
【问题描述】:
我是 Prolog 的新手,我正在努力了解列表。我正在努力解决的问题是: 给定列表形式的数字 (1 : [x], 3: [x, x, x]),实现 'times' 谓词 /3。 例如:次([x,x],[x,x,x],R)。 R = [x, x, x, x, x, x]。
加号和后继谓词在哪里 2 以前的练习点。我知道我没有使用后继谓词,但后来它似乎没那么有用了。
这是我迄今为止尝试过的
successor([], [x]).
successor([X|T], R) :-
append([X|T], [X], R).
plus(L1, L2, R) :- append(L1, L2, R).
times([], _, []).
times(_, [], []).
times([_], L, L).
times(L, [_], L).
times([_|T], L2, R) :- plus(L2, R, RN),
times(T, L2, RN).
输出是: R 是 []。
【问题讨论】:
-
你想在这里用
append([X|T], [X], R)做什么? -
successor([x, x], R) 应该产生 R = [x, x, x]。所以我只是添加了 1 个元素,就像第一个列表中的 Head 一样。
标签: prolog successor-arithmetics