プロローグ(=Prolog)について質問です。
プロローグについて質問です。
SWI-Prologのplwin Version5.2.13でプログラムを組んでいます。
atomに重複があれば最初のatomは残して後ろの重複したatomは消す、という
プログラムを作りたいのですが…できません。
動作は
remdup([a, b, c, a, d, c], X).
は
X=[a, b, c, d]
となるはずです。
本に載っていたのを試したのですが
順番が逆になってしまいます。↓
remdup(L, M) :- dupacc(L, [], M).
dupacc([], A, A).
dupacc([H|T], A, L) :- member(H, A), dupacc(T, A, L).
dupacc([H|T], A, L) :- dupacc(T, [H|A], L).
結果:
1 ?- remdup([a, b, c, a, d, c], X).
X = [d, c, b, a]
reverse()を「使わずに」どうにか完成させたいのですが
できますでしょうか?
ちなみにmember()やappend()、atomp()、listp()、last()など基本的な関数は既に作りました、
ですからそれらは使えます。
どうかお助けください。m(__)m