我有这个代码来遍历列表中的替换字符:
build.gradle
如果我给它一个替换列表,例如:
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(A,_,0,_,A):- !.
replaceX(Line,Index,NumElm,Elm,NLine) :-
replace(Line,Index,Elm,BLine),
Index1 is Index+1,
NumElm1 is NumElm-1,
replaceX(BLine,Index1,NumElm1+1,Elm,NLine).
我得到replaceX([b, b, b, b, b], 1, 3, r, Y).
如何一次多次执行此操作才能获得以下内容?
Y = [b, r, r, r, b],
答案 0 :(得分:0)
我使用此函数来循环我之前的代码,虽然它有自己的错误,我会尝试在另一个线程中修复。
loopReplace(ListToReplace, Size, NewList) :-
length(ListToReplace, Len),
TotalCount is Len-2,
between(0, TotalCount, Iterations),
replaceX(ListToReplace, Iterations, Size, 'r', NewList).
示例输入:
placeRedBlocks(5, X), loopReplace(X, Y).
输出:
X = [b, b, b, b, b],
Y = [r, r, r, b, b]
X = [b, b, b, b, b],
Y = [b, r, r, b, b]
X = [b, b, b, b, b],
Y = [r, r, r, r, b]
X = [b, b, b, b, b],
Y = [b, r, r, r, b]
X = [b, b, b, b, b],
Y = [r, r, r, r, r]
X = [b, b, b, b, b],
Y = [b, r, r, r, r]
X = [b, b, b, b, b],
Y = [b, r, r, r, b]
X = [b, b, b, b, b],
Y = [b, r, r, r, r]
X = [b, b, b, b, b],
Y = [b, r, r, r, r]
X = [b, b, b, b, b],
Y = [b, b, r, r, r]
X = [b, b, b, b, b],
Y = [b, b, r, r, r]
X = [b, b, b, b, b],
Y = [b, b, r, r, r]