文字列処理に最適な言語
■ このスレッドは過去ログ倉庫に格納されています
0071デフォルトの名無しさん
2007/11/23(金) 07:21:06split('',_,[]) :- !.
split(Atom,Divs,X) :-
sa(Atom,AtomL,Divs,Div,AtomR),
split(AtomL,Divs,LL),
split(AtomR,Divs,LR),
append(LL,[Div|LR],X).
split(Atom,Divs,[Atom]) :-
not(sub_atom_2(Atom,AtomL,Divs,Div,AtomR)).
sa(Atom,AtomL,Divs,Div,AtomR) :-
member(Div,Divs),
sub_atom(Atom,Sp,Len,RLen,Div),
sub_atom(Atom,0,Sp,_,AtomL),
sub_atom(Atom,Sp + Len,RLen,_,AtomR).
これで
?- split(abcdefgh,[bc,b,ef],X).
X = [a,bc,d,ef,gh];
X = [a,b,cd,ef,gh];
X = [a,bc,d,ef,gh];
X = [a,b,cd,ef,gh];
no.
のような実行結果が得られます。
■ このスレッドは過去ログ倉庫に格納されています