>>14
関数ではありませんが、
最長の文字連続(_文字列,_文字ならび,_長さ) :- atom_chars(_文字列,L),連続(L,0,[],_文
字ならび,_長さ).
連続([],Max,L,L,Max).
連続([A|R],Max,L,X,Y) :- 先頭から連続([A|R],L1,R3),list_length(L1,Len),連続_1(A,Le
n,Max,R3,L,X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len=Max,not(member(A,L)),連続(R3,Len,[A|L],X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len=Max,member(A,L),連続(R3,Len,L,X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len>Max,連続(R3,Len,[A],X,Y).
連続_1(A,Len,Max,R3,L,X,Y) :- Len<Max,連続(R3,Max,L,X,Y).
先頭から連続([A,A|R1],[A|R2],R):- 先頭から連続([A|R1],R2,R).
先頭から連続([A,B|R1],[A],[B|R1]) :- not(A=B).
%%% 実行例 %%%
?- 最長の文字連続(aaabbbbbbccdddeeeeeefffeeeeeejjjjee,_長さ,_文字).
_文字=[e,b],
_長さ=6
yes
?-