簡體   English   中英

在元素處分割列表

[英]Split list at element

我希望能夠將某個元素的列表一分為二。 例如, split_at(c, [a,b,c,d,e], Left, Right)應該給我Left = [a,b]Right = [c,d,e] 此刻,即使我看到在跟蹤中構建了LeftRight ,我的代碼最后也沒有給我任何東西。 有人可以指出錯誤嗎?

split_at(_, [], [], []).
split_at(Element, [Element|T], _, [Element|T]). 
split_at(Element,[H|T],  Left, _) :- split_at(Element, T, [H|Left], _).

假設您的意思是第一次出現指定元素時發生分裂(而不是列表中的第三項):

split_left_right_list(Split,[],[Split|Rest],[Split|Rest]).
split_left_right_list(S,LR,R,[First|Rest]):-
    dif(First,S),
    split_left_right_list_ac(S,L,R,Rest,[First]),
    reverse(L,LR).

split_left_right_list_ac(_,AC,[],[],AC).
split_left_right_list_ac(S,AC,[S|Rest],[S|Rest],AC).
split_left_right_list_ac(S,L,R,[Not|Rest],AC):-
    dif(Not,S),
    split_left_right_list_ac(S,L,R,Rest,[Not|AC]). 
split_at(Elem,List,Left,Right) :-
  append(Left,[Elem|Rest],List), Right = [Elem|Rest].

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM