Advertisement
Guest User

Untitled

a guest
Apr 16th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 5.60 KB | None | 0 0
  1. /* Программа: эксперт по породам собак                                 */
  2.  
  3. /* Это продукционная система, базирующаяся на правилах*/
  4.  
  5. database
  6.  
  7.   xpositive(symbol,symbol)
  8.  
  9.   xnegative(symbol,symbol)
  10.  
  11. predicates
  12.  
  13.   do_expert_job
  14.  
  15.   do_consulting
  16.  
  17.   ask(symbol,symbol)
  18.  
  19.   dog_is(symbol)
  20.  
  21.   it_is(symbol)
  22.  
  23.   positive(symbol,symbol)
  24.  
  25.   negative(symbol,symbol)
  26.  
  27.   remember(symbol,symbol,symbol)
  28.  
  29.   clear_facts
  30.  
  31. goal
  32.  
  33.   do_expert_job .
  34.  
  35. clauses
  36.  
  37. /* Систесма пользовательского интерфейса */
  38.  
  39.   do_expert_job :– makewindow(1, 7, 7, "ЭКСПЕРТ ПО  ПОРОДАМ СОБАК, 1, 16, 22, 58),
  40.  
  41.          nl,write(" * * * * * * * * * * * * * * * * * * * * *  "),
  42.  
  43.          nl,write("          ДОБРО ПОЖАЛОВАТЬ!          "),nl,nl,
  44.  
  45.          nl,write(" Проводится идентификация породы "),nl,nl,
  46.  
  47.          nl,write(" Отвечайте, пожалуйста, 'да' или 'нет' "),
  48.  
  49.          nl,write(" а вопросы о собаке, породу которой "),
  50.  
  51.          nl,write(" Вы хотите определить "),
  52.  
  53.          nl,write(" * * * * * * * * * * * * * * * * * * * * * * "),
  54.  
  55.          nl,nl,do_consulting,write("Нажмите любую клавишу"),
  56.  
  57.          nl, readchar(_), removewindow.
  58.  
  59.   do_consulting :– dog_is(X), !, nl, write("Вероятно Ваша собака – ",X,"."),
  60.  
  61.                               nl,clear_facts.
  62.  
  63.   do_consulting :­– nl, write("Извините, я не смогу помочь Вам!"),
  64.  
  65.                               clear_facts.
  66.  
  67.   ask(X,Y) :write(" ?:– ",X, "  ",Y, " ?  "), readln(Reply),
  68.  
  69.                      remember(X,Y,Reply).
  70.  
  71. /* Механизм вывода */
  72.  
  73.   positive(X,Y) :– xpositive(X,Y),!.
  74.  
  75.   positive(X,Y) :– not(negative(X,Y)),!,ask(X,Y).
  76.  
  77.   negative(X,Y) :– xnegative(X,Y),!.
  78.  
  79.   remember(X,Y,yes) :asserta(xpositive(X,Y)).
  80.  
  81.   remember(X,Y,no) :asserta(xnegative(X,Y)),fail.
  82.  
  83.  
  84.  
  85.   clear_facts :retract(xpositive(_,_)), fail.
  86.  
  87.   clear_facts :retract(xnegative(_,_)), fail.
  88.  
  89. /*  Продукционные правила */
  90.  
  91.   dog_is("Английский Бульдог") :– it_is("короткошерстная собака"),
  92.  
  93.                               positive("ее","высота в холке не более  57 см"),
  94.  
  95.                               positive("у нее","низко посаженный хвост"),
  96.  
  97.                               positive("у нее","дружелюбный характер"),!.
  98.  
  99.   dog_is("Гончая") :– it_is("короткошерстная собака"),
  100.  
  101.                               positive("ее","высота в холке не более  57 см"),
  102.  
  103.                               positive("у нее","длинные уши"),
  104.  
  105.                               positive("у нее","дружелюбный характер"),!.
  106.  
  107.   dog_is("Немецкий Дог") :– it_is("короткошерстная собака"),
  108.  
  109.                               positive("у нее","низко посаженный хвост"),
  110.  
  111.                               positive("у нее","дружелюбный характер"),
  112.  
  113.                               positive("ее","вес более 45 кг"),!.
  114.  
  115.   dog_is("Американский Фоксхаунд") :– it_is("короткошерстная собака"),
  116.  
  117.                               positive("ее","высота в холке не более  77 см"),
  118.  
  119.                               positive("у нее","длинные уши"),
  120.  
  121.                               positive("у нее","дружелюбный характер"),!.
  122.  
  123.   dog_is("Кокер Спаниель") :– it_is("длинношерстная собака"),
  124.  
  125.                               positive("ее","высота в холке не более  57 см"),
  126.  
  127.                               positive("у нее","низко посаженный хвост"),
  128.  
  129.                               positive("у нее","длинные уши"),
  130.  
  131.                               positive("у нее","дружелюбный характер"),!.
  132.  
  133.   dog_is("Ирландский  Сеттер") :– it_is("длинношерстная собака"),
  134.  
  135.                               positive("ее","высота в холке не более  77 см"),
  136.  
  137.                               positive("у нее","длинные уши"),!.
  138.  
  139.   dog_is("Колли") :– it_is("длинношерстная собака"),
  140.  
  141.                               positive("ее","высота в холке не более  77 см"),
  142.  
  143.                               positive("у нее","низко посаженный хвост"),
  144.  
  145.                               positive("у нее","дружелюбный характер"),!.
  146.  
  147.   dog_is("Сенбернар") :– it_is("длинношерстная собака"),
  148.  
  149.                               positive("у нее","низко посаженный хвост"),
  150.  
  151.                               positive("у нее","дружелюбный характер"),
  152.  
  153.                               positive("ее","вес более 45 кг"),!.
  154.  
  155.   it_is("короткошерстная собака ") :
  156.  
  157.                               positive("это","короткошерстная собака "),!.
  158.  
  159.   it_is("длинношерстная собака ") :
  160.  
  161.                               positive("это","длинношерстная собака "),!.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement