【发布时间】:2015-01-08 09:52:11
【问题描述】:
我正在尝试实现一个谓词,该谓词在给定索引之后(并包括)替换列表的 NumElm 元素。为此,我使用另一个谓词来替换列表的元素。 到目前为止我的代码是:
replace([_|T], 0, X, [X|T]).
replace([H|T], I, X, [H|R]):-
I > -1,
NI is I-1,
replace(T, NI, X, R), !.
replace(L, _, _, L).
replaceX(_,_,0,_,_).
replaceX(Line,Index,NumElm,Elm,NLine) :-
replace(Line,Index,Elm,BLine),
Index1 is Index+1,
NumElm1 is NumElm-1,
replaceX(BLine,Index1,NumElm1,Elm,Nline).
使用该代码,仅替换第一个元素,即 order Index 的元素。 有任何想法吗? 提前致谢。 [编辑] 前面代码的结果只是“是”。替换第一个元素的元素如下:
replace([_|T], 0, X, [X|T]).
replace([H|T], I, X, [H|R]):-
I > -1,
NI is I-1,
replace(T, NI, X, R), !.
replace(L, _, _, L).
replaceX(_,_,0,_,_).
replaceX(Line,Index,NumElm,Elm,NLine) :-
replace(Line,Index,Elm,NLine),
Index1 is Index+1,
NumElm1 is NumElm-1,
replaceX(NLine,Index1,NumElm1,Elm,Nline).
【问题讨论】:
标签: list replace prolog elements