% ameoba@girl:~/triangle$ gprolog % GNU Prolog 1.2.18 % By Daniel Diaz % Copyright (C) 1999-2004 Daniel Diaz % | ?- consult('tri.pl'). % compiling /home/ameoba/triangle/tri.pl for byte code... % /home/ameoba/triangle/tri.pl compiled, 33 lines read - 4628 bytes written,10 ms % % yes % | ?- numtri(X). % % X = 27 % % yes % | ?- line([0,5,8,10]). line([0,1]). line([1,6,9,10]). line([0,3,7,9]). line([0,2,4,6]). line([1,2,3,5]). line([1,4,7,8]). edge(X,Y) :- line(L), member(X,L), member(Y,L), X > Y. colinear(X,Y,Z) :- line(L), member(X,L), member(Y,L), member(Z,L). tri(X,Y,Z) :- edge(X,Y), edge(X,Z), edge(Y,Z), X > Y, Y > Z, \+ colinear(X,Y,Z). numtri(X) :- setof([X,Y,Z], tri(X,Y,Z), Tris), length(Tris,X).