PrologでまったりPart 2
■ このスレッドは過去ログ倉庫に格納されています
0559デフォルトの名無しさん
2006/05/27(土) 00:50:19とりあえず書いてみた。
uniq_color(List, Result) :- uniq_color(List, [], Reversed), reverse(Reversed, Result).
uniq_color([Head|Tail], Temp, Result) :- functor(Head, Color, 1), \+ member(Color, Temp), !, uniq_color(Tail, [Color|Temp], Result).
uniq_color([_|Tail], Temp, Result) :- uniq_color(Tail, Temp, Result).
uniq_color([], Result, Result).
extract_color([Head|Tail], Color, [Head|RTail]) :- functor(Head, Color, 1), !, extract_color(Tail, Color, RTail).
extract_color([_|Tail], Color, Result) :- extract_color(Tail, Color, Result).
extract_color([], _, []).
fold(Function, [First|[Second|Rest]], Result) :- call(Function, First, Second, Temp), fold(Function, [Temp|Rest], Result).
fold(_, [Result], Result).
sort_colors(List, Result) :-
uniq_color(List, Colors), maplist(extract_color(List), Colors, Temp), fold(append, Temp, Result).
■ このスレッドは過去ログ倉庫に格納されています