Создание запроса. Подскажите - 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д