Скачиваний:
12
Добавлен:
01.05.2014
Размер:
54.27 Кб
Скачать

Программа путешествия по городам, не заезжая в некоторые из них.

doroga('Vyborg','Peterburg',160).

doroga('Peterburg','Moscow',600).

doroga('Peterburg','Novgorod',170).

doroga('Novgorod','Moscow',490).

doroga('Peterburg','Novosibirsk',2560).

doroga('Peterburg','Kiev',1060).

doroga('Kiev','Omsk',2600).

doroga('Moscow','Omsk',1900).

doroga('Novosibirsk','Omsk',350).

doroga('Omsk','Krasnoyrsk',900).

doroga('Krasnoyrsk','Vladivostok',3700).

doroga1(X,Y,Dist):-doroga(X,Y,Dist).

doroga1(X,Y,Dist):-doroga(Y,X,Dist).

nenado([]).

prinadl(Z,[Z|_]).

prinadl(Z,[_|X]):-prinadl(Z,X).

pechat([]):-!.

pechat([X|Tail]):-

pechat(Tail),

write(X),

write('-').

puty(Gorod1,Gorod2,Dist,Byli,Nenado):-

doroga1(Gorod1,Gorod2,Dist),

not(prinadl(Gorod2,Byli)),

nl,pechat(Byli),

write(Gorod2).

puty(Gorod1,Gorod2,Dist,Byli,Nenado):-

doroga1(Gorod1,X,Dist1),

not(prinadl(X,Byli)),

not(prinadl(X,Nenado)),

puty(X,Gorod2,Dist2,[X|Byli],Nenado),

Dist is Dist1+Dist2.

go(Gorod1,Gorod2,Dist):-

nenado(Nenado),

puty(Gorod1,Gorod2,Dist,[Gorod1],Nenado).

Примеры :

  1. nenado(['Novgorod','Kiev']).

?- go('Vyborg','Omsk',Dist).

Vyborg-Peterburg-Moscow-Omsk

Dist = 2660 ->;

Vyborg-Peterburg-Novosibirsk-Omsk

Dist = 3070 ->;

no

  1. nenado( [ ] ).

?- go('Vyborg','Omsk',Dist).

Vyborg-Peterburg-Moscow-Omsk

Dist = 2660 ->;

Vyborg-Peterburg-Novgorod-Moscow-Omsk

Dist = 2720 ->;

Vyborg-Peterburg-Novosibirsk-Omsk

Dist = 3070 ->;

Vyborg-Peterburg-Kiev-Omsk

Dist = 3820 ->;

no

Соседние файлы в папке ARI_DOC