-2

例如,我有这个号码列表:

[1,2,3,4,5,6,7,8,9,10].  

例如,我必须搜索一个数字7并插入"$"BEFORE 和 AFTER 7

[1,2,3,4,5,6,$,7,$,8,9,10].  

我怎样才能做到这一点?

4

1 回答 1

0

我使用 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, $] ;

当然,您可以为此构建漂亮的谓词。

于 2012-11-21T11:58:23.823 回答