Comment detail

アレイのuniq (Nested Flatten)
Prologって、マイナーなんだなぁ。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
uniq([], R) :- fill(R).
uniq([Xh|Xs], R) :- memv(Xh, R), uniq(Xs, R).
uniq([Xh|Xs], R) :- add(Xh, R), uniq(Xs, R).

memv(_, V) :- var(V), fail.
memv(X, [X|_]).
memv(X, [_|Vt]) :- memv(X, Vt).

add(X, R) :- var(R), R=[X|_].
add(X, [_|Rt]) :- add(X, Rt).

fill(R):-var(R), R=[].
fill([_|Rs]):-fill(Rs).

:- uniq([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9], R), writeln(R).

Index

Feed

Other

Link

Pathtraq

loading...