例如,我有这个号码列表:
[1,2,3,4,5,6,7,8,9,10].
例如,我必须搜索一个数字7
并插入"$"
BEFORE 和 AFTER 7
:
[1,2,3,4,5,6,$,7,$,8,9,10].
我怎样才能做到这一点?
我使用 swi prolog,您可以使用替换谓词(在其他堆栈溢出问题中找到),并结合列表上的 flatten 运算符:
:- use_module(library(lists)).
replace(_, _, [], []).
replace(O, R, [O|T], [R|T2]) :- replace(O, R, T, T2).
replace(O, R, [H|T], [H|T2]) :- H \= O, replace(O, R, T, T2).
现在:
replace(1,[$,1,$],[4,3,2,1],NewList),flatten(NewList,FlattendList).
NewList = [4, 3, 2, [$, 1, $]],
FlattendList = [4, 3, 2, $, 1, $] ;
当然,您可以为此构建漂亮的谓词。