Заданно 3 точки (x1,y1), (x2,y2), (x3,y3) определеить их взаимное расположение если:
а) все точки совпадают
б) 2 точки совпадают а 4 отличается
в) все точки разные
1 вариант:
DOMAINS
r=real
PREDICATES
diff(r,r,r,r,integer).
sum_diff(r,r,r,r,r,r,integer).
case(integer).
CLAUSES
diff(X,Y,X,Y,0):-!.
diff(_,_,_,_,1).
sum_diff(X1,Y1,X2,Y2,X3,Y3,D):-
diff(X1,Y1,X2,Y2,D1),
diff(X1,Y1,X3,Y3,D2),
diff(X2,Y2,X3,Y3,D3),
D=D1+D2+D3.
case(0):-write("Vse tochki sovpadayut"),nl.
case(2):-write("Dve tochki sovpadayut"),nl.
case(3):-write("Vse tochki razlichni"),nl.
GOAL
write("Vvedite X 1-oi tochki: "),readreal(X1),
write("Vvedite Y 1-oi tochki: "),readreal(Y1),
write("Vvedite X 2-oi tochki: "),readreal(X2),
write("Vvedite Y 2-oi tochki: "),readreal(Y2),
write("Vvedite X 3-oi tochki: "),readreal(X3),
write("Vvedite Y 3-oi tochki: "),readreal(Y3),
sum_diff(X1,Y1,X2,Y2,X3,Y3,D),case(D).
2 вариант:
predicates
vupadoc(real,real,real,real,real,real,string)
clauses
vupadoc(X1,X2,X3,Y1,Y2,Y3,S):-X1=X2,X2=X3,X1=X3,Y1=Y2,Y2=Y3,Y1=Y3,S="a".
vupadoc(X1,X2,X3,Y1,Y2,Y3,S):-X1=X2,X2=X3,X1<>X3,Y1=Y2,Y2=Y3,Y1<>Y3,S="b";
X1=X2,X2<>X3,X1=X3,Y1=Y2,Y2<>Y3,Y1=Y3,S="b";
X1<>X2,X2=X3,X1=X3,Y1<>Y2,Y2=Y3,Y1=Y3,S="b".
vupadoc(X1,X2,X3,Y1,Y2,Y3,S):- X1<>X2,X2<>X3,X1<>X3,Y1<>Y2,Y2<>Y3,Y1<>Y3,S="v".
|