⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch18ex03.pro

📁 prolog,人工智能推理程序,运行环境prolog
💻 PRO
字号:
/*
   Turbo Prolog 2.0 Chapter 18, Example Program 3
   
   Copyright (c) 1986, 88 by Borland International, Inc
   
*/
   
domains
   room     =  symbol
   roomlist = room*

predicates
   gallery(room, room)                /* There is a gallery between two rooms */
   neighborroom(room, room)           /* Necessary because it does not matter */
				    /* which direction you go along a gallery */
   avoid(roomlist)
   go(room, room)
   route(room, room, roomlist)           /* This is the route to be followed. */
                     /* roomlist consists of a list of rooms already visited. */
   member(room, roomlist)

clauses
   gallery(entry, monsters).            gallery(entry,fountain).
   gallery(fountain, hell).         	gallery(fountain, food).
   gallery(exit, gold_treasure).    	gallery(fountain, mermaid).
   gallery(robbers, gold_treasure). 	gallery(fountain, robbers).
   gallery(food, gold_treasure).    	gallery(mermaid, exit).
   gallery(monsters, gold_treasure).	gallery(gold_treasure,exit).

   neighborroom(X, Y) :- gallery(X, Y).
   neighborroom(X, Y) :- gallery(Y, X).

   avoid([monsters, robbers]).

   go(Here, There) :- route(Here, There, [Here]).
   go(_, _).

   route(Room, Room, VisitedRooms) :-
      member(gold_treasure, VisitedRooms),  write(VisitedRooms), nl.
   route(Room, Way_out, VisitedRooms) :-
      neighborroom(Room, Nextroom),
      avoid(DangerousRooms),
      not(member(NextRoom, DangerousRooms)),
      not(member(NextRoom, VisitedRooms)),
      route(NextRoom, Way_out, [NextRoom|VisitedRooms]).

   member(X, [X|_]).
   member(X, [_|H]) :- member (X, H).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -