1
我不得不创建一个谓词,将特定点的列表拆分为更小的列表。用特定的“标记”分割列表
E.g.它必须将以下列表[4,5,0,3,2,0,6,1]分开,其中零是。 的Prolog的回答应该是:
X=[[4,5],[3,2],[6,1]].
我的解决方案(!实际工作)如下:
get_chunk(_,[],[],[]).
get_chunk(Splitter,[Splitter|L],[],L).
get_chunk(Splitter,[Head|L],[Head|X],R) :- get_chunk(Splitter,L,X,R).
split([],_,[]).
split(SL,Splitter, [U|Us]) :- get_chunk(Splitter,SL,U,L),
split(L,Splitter,Us).
有可能的替代解决方案,这是更优雅? 非常感谢!
分裂([1,2],2,L)。得到L = [[1],[]]。预期?当然是 – ssBarBee
。否则,你如何知道列表以分隔符结束?通常有一个选项可以改变这种行为,并摆脱空容器。 – CapelliC
啊我现在明白了:)我试图摆脱它在我的解决方案中认为它是多余的:) – ssBarBee