Создание запроса. Подскажите - Prolog

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

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

задача о том, как найти расстояние между городами. Все почти решено, не правильно выходит одно... Не находит расстояние от городов, дальности которых мы не пишем готовыми , то естьь пролог сам должен посчитать дальность) вот код:
Вот код. Он может посчитать правильно расстояния которые мы сами задаем, то есть расстояния например с Риги до таллина. а Вот с киева до таллина не может так как на прямую не указали.. Выручите с запросом

Решение задачи: «Создание запроса. Подскажите»

textual
Листинг программы
domains
gorod1=symbol
steps=integer
gorod2=gorod1*
 
predicates
nondeterm doroga(gorod1,gorod1,steps).
nondeterm doroga1(gorod1,gorod1,steps).
nondeterm path(gorod1,gorod1,steps,gorod2).
nondeterm route(gorod1,gorod1).
nondeterm member(gorod1,gorod2).
nondeterm write_way(gorod2).
 
goal
route(riga,moscow).
 
clauses
doroga(riga,tallin,200).
doroga(tallin,leningrad,400).
doroga(riga,leningrad,700).
doroga(leningrad,kiev,1100).
doroga(leningrad,moscow,700).
doroga(moscow,tehas,2000).
 
doroga1(Gorod1,Gorod2,Distance):-
doroga(Gorod1,Gorod2,Distance);doroga(Gorod2,Gorod1,Distance).
 
path(Gorod2,Gorod2,Distance,Goroda):-write("Way: "),write_way(Goroda),
    write(". Distance: ",Distance).
path(Gorod1,Gorod2,Distance,Goroda):- doroga1(Gorod1,X,Dist1),not(member(X,Goroda)),
    Dist2=Distance+Dist1,path(X,Gorod2,Dist2,[X|Goroda]).
 
route(T1,T2):-path(T1,T2,0,[T1]).
 
write_way([]).
write_way([H|Tail]):- write_way(Tail),write(" ",H).
member(X,[X|_]).
member(X,[_|Y]):-member(X,Y).

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы