Subversion Repositories programming

Rev

Blame | Last modification | View Log | RSS feed

/* pair2.pl -- pairs of digits WITHOUT replacement */

pair(L) :- L = [X,Y],
           free_digit(X,L),
           free_digit(Y,L).

free_digit(Dig,UsedList) :- var(Dig),
                            digit(X),
                            not_in(X,UsedList),
                            Dig = X.

free_digit(Dig,_) :- nonvar(Dig).

digit(0).
digit(1).
digit(2).

not_in(_,[]).
not_in(D,[H|T]) :- var(H), not_in(D,T).
not_in(D,[H|T]) :- nonvar(H), D \= H, not_in(D,T).