[英]Prolog geometric triangle rules
關於如何在二維點的等邊三角形和等腰三角形的序言中創建規則的任何示例?
從這些開始:
equilateral(point2d(x,y), point2d(x,y), point2d(x,y))
isosceles(point2d(x,y), point2d(x,y), point2d(x,y))
要檢查三角形是否等邊,非常簡單。 要檢查它是否為等腰,它的瑣碎性要小一些。 這是我的解決方案:
seg_length(X1,Y1,X2,Y2,D):-
D is sqrt(((X2-X1)**2)+((Y2-Y1)**2)).
equilateral(point2d(X1,Y1), point2d(X2,Y2), point2d(X3,Y3)):-
seg_length(X1,Y1,X2,Y2,D),
seg_length(X2,Y2,X3,Y3,D),
seg_length(X3,Y3,X1,Y1,D).
isosceles(point2d(X1,Y1), point2d(X2,Y2), point2d(X3,Y3)):-
seg_length(X1,Y1,X2,Y2,D1),
seg_length(X2,Y2,X3,Y3,D2),
seg_length(X3,Y3,X1,Y1,D3),
L = [D1,D2,D3],
sort(L,LS),
length(L,LenL),
length(LS,LenLS),
LenL \== LenLS.
要檢查至少兩個邊是否相等,我使用sort/2
從列表中刪除重復項。 如果兩個列表的長度相同,則表示所有三個邊都不相同,因此三角形不是等腰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.