1
특정 지점의 목록을 작은 목록으로 분할하는 술어를 만들어야했습니다.특정 "마커"가있는 목록 분할
예. 제로가있는 다음 목록 [4,5,0,3,2,0,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).
어쩌면 대체 솔루션이 있습니까 :
X=[[4,5],[3,2],[6,1]].
내 솔루션 (! 실제로 작동) 다음은? 대단히 감사합니다!
분할 ([1,2], 2, L)를 내놓았다 것입니다. L = [[1], []]을 산출한다. 기대 되는가? 물론 – ssBarBee
. 그렇지 않으면 구분 기호로 목록 끝을 어떻게 알 수 있습니까? 일반적으로이 동작을 변경하고 용기를 없애는 옵션이 있습니다. – CapelliC
아 나는 지금 이해하고있다 :) 나는 그것으로 내 솔루션을 과도하게 생각한 것을 없애려고 노력했다. :) – ssBarBee