pythagorean_triple/3 — triunghi dreptunghic în plan
Scrieți un program Prolog care, primind trei puncte în plan, verifică dacă ele determină un triunghi dreptunghic. Punctele sunt reprezentate ca perechi (X, Y).
?- pythagorean_triple((0,0), (3,0), (0,4)).
true.
Hint: calculează cele trei distanțe cu
distance/3de la Exercițiul 3, apoi verifică (cu=:=pe pătratele lor) dacă vreuna dintre cele trei relații Pitagora este satisfăcută.
Te-ai blocat?
editor
soluție
distance((X1, Y1), (X2, Y2), D) :-
D is sqrt((X1 - X2)**2 + (Y1 - Y2)**2).
pythagorean_triple((X1, Y1), (X2, Y2), (X3, Y3)) :-
distance((X1, Y1), (X2, Y2), D1),
distance((X1, Y1), (X3, Y3), D2),
distance((X2, Y2), (X3, Y3), D3),
( D1**2 =:= D2**2 + D3**2
; D2**2 =:= D1**2 + D3**2
; D3**2 =:= D1**2 + D2**2
).
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (3 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
pythagorean_triple((0,0), (3,0), (0,4)).
așteptat: true
?
pythagorean_triple((0,0), (1,0), (0,1)).
așteptat: true
?
pythagorean_triple((0,0), (1,0), (2,0)).
așteptat: false