Структуры в прологе - Prolog

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста решить задачу в турбо прологе - Найти все отрезки, которые при вертикальном параллельном перемещении совпадают с одной из сторон треугольника. Реализовать с помощью структур. Пролог начал изучать недавно и не имею представления как решать эту задачу. Заранее спасибо.

Решение задачи: «Структуры в прологе»

textual
Листинг программы
domains
point=p(real,real)
interval=i(point,point)
otrlist=interval*
 
predicates
otrezok(interval)
storona(interval)
parallel(interval,interval)
list1(otrlist)
addotr(otrlist,otrlist)
checkotr(otrlist,otrlist)
readotr(interval)
runo(otrlist)
 
clauses
 
%--------Data Base--------- 
otrezok(i(p(-1,-1),p(1,1))).
otrezok(i(p(2,2),p(4,4))).
otrezok(i(p(1,-1),p(-1,-1))).
storona(i(p(0,0),p(2,2))).
storona(i(p(0,0),p(2,0))).
storona(i(p(2,0),p(2,2))).
 
%--------------Proverka na parallelnost`-----------------
parallel(i(p(X1,Y1),p(X2,Y2)),i(p(X3,Y3),p(X4,Y4))):-X3-X1=X4-X2,Y3-Y1=Y4-Y2.
parallel(i(p(X1,Y1),p(X2,Y2)),i(p(X3,Y3),p(X4,Y4))):-X4-X1=X3-X2,Y4-Y1=Y3-Y2.
 
%--------------BBoD otrezka c Klaviaturi----------------------------
list1(L1):- findall(X, otrezok(X), L1).
addotr(L1, L2):- write("Dobavit eche otrezok? (y/n)"), readchar(Ch), Ch = 'y', !, nl, readotr(Z), addotr([Z | L1], L2).
addotr(L, L):-readchar(Ch),Ch='n',!,nl.    
readotr(i(p(X1,Y1),p(X2,Y2))):- write("X1 = "), readint(X1), write("Y1 = "), readint(Y1), nl, write("X2 = "), readint(X2), write("Y2 = "), readint(Y2), nl,!.
readotr(Z):- nl, write("Error! Repeat!"), readchar(_), nl, nl, readotr(Z).
 
%-------Proverka Bcex OTpe3KOB Ha parallelnost` co CToponami Tpeugolnika-----------
checkotr([], []).                                                            
checkotr([Tr1 | L1], [Tr1 | L2]):- storona(A),parallel(Tr1,A), !, checkotr(L1, L2).
checkotr([_ | L1], L2):- checkotr(L1, L2).
 
runo(A):-list1(L1),addotr(L1,L2),checkotr(L2,A).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5