lossyy

prolog lab11

Mar 24th, 2022 (edited)
694
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 8.10 KB | None | 0 0
  1. %  maznev software :)
  2.  
  3. class lab11
  4.  
  5. predicates
  6.     ended : (integer X) determ.
  7.     guess : (string X).
  8.     data : (integer N [out], string X, string Y [out], integer* [out]) nondeterm.
  9.     resolution : (integer*) determ.
  10.     question : (integer X) determ.
  11.  
  12. end class
  13.  
  14. implement lab11
  15.  
  16. class facts
  17.     fact : (integer X, string Y).
  18.  
  19. clauses
  20.     guess(X) :-
  21.         data(N, X, Y, Z),
  22.         resolution(Z),
  23.         !,
  24.         console::write(X, " -  ", Y, ", правило №", N),
  25.         console::nl,
  26.         guess(Y).
  27.  
  28.     guess("Посуда") :-
  29.         console::write("Посуду не удалось определить."),
  30.         !.
  31.  
  32.     guess("Столовые приборы") :-
  33.         console::write("Посуду не удалось определить."),
  34.         !.
  35.  
  36.     guess("Вилки") :-
  37.         console::write("Посуду не удалось определить."),
  38.         !.
  39.  
  40.     guess("Посуда для сервировки стола") :-
  41.         console::write("Посуду не удалось определить."),
  42.         !.
  43.  
  44.     guess("Тарелки") :-
  45.         console::write("Посуду не удалось определить."),
  46.         !.
  47.  
  48.     guess("Питьевая посуда") :-
  49.         console::write("Посуду не удалось определить."),
  50.         !.
  51.  
  52.     guess("Посуда для алкоголя") :-
  53.         console::write("Посуду не удалось определить."),
  54.         !.
  55.  
  56.     guess("Посуда для приготовления пищи") :-
  57.         console::write("Посуду не удалось определить."),
  58.         !.
  59.  
  60.     guess("Посуда для хранения пищи") :-
  61.         console::write("Посуду не удалось определить."),
  62.         !.
  63.  
  64.     guess(_).
  65.  
  66.     resolution([]).
  67.  
  68.     resolution([X | Y]) :-
  69.         question(X),
  70.         resolution(Y).
  71.  
  72.     ended(X) :-
  73.         console::nl,
  74.         Y = console::readLine(),
  75.         assert(fact(X, Y)),
  76.         Y = "Д".
  77.  
  78. clauses
  79.     question(X) :-
  80.         fact(X, "Д"),
  81.         !.
  82.  
  83.     question(X) :-
  84.         fact(X, "Н"),
  85.         !,
  86.         fail.
  87.  
  88.     question(1) :-
  89.         console::write("Эта посуда предназначена для того, чтобы не нужно было брать пищу руками?"),
  90.         !,
  91.         ended(1).
  92.  
  93.     question(2) :-
  94.         console::write("Эта посуда стоит на столе во время приёма пищи?"),
  95.         !,
  96.         ended(2).
  97.  
  98.     question(3) :-
  99.         console::write("Эта посуда используется для готовки?"),
  100.         !,
  101.         ended(3).
  102.  
  103.     question(4) :-
  104.         console::write("Эта посуда нужна для того, чтобы было в чём хранить пищу?"),
  105.         !,
  106.         ended(4).
  107.  
  108.     question(5) :-
  109.         console::write("Этим прибором прокалывают пищу/едят салаты?"),
  110.         !,
  111.         ended(5).
  112.  
  113.     question(6) :-
  114.         console::write("Этим прибором едят супы?"),
  115.         !,
  116.         ended(6).
  117.  
  118.     question(7) :-
  119.         console::write("Эта вилка имеет короткие зубцы?"),
  120.         !,
  121.         ended(7).
  122.  
  123.     question(8) :-
  124.         console::write("Эта вилка имеет три зубца?"),
  125.         !,
  126.         ended(8).
  127.  
  128.     question(9) :-
  129.         console::write("Эта вилка предназначена для горячих блюд?"),
  130.         !,
  131.         ended(9).
  132.  
  133.     question(10) :-
  134.         console::write("В эту посуду накладывают пищу?"),
  135.         !,
  136.         ended(10).
  137.  
  138.     question(11) :-
  139.         console::write("В эту посуду наливают напитки?"),
  140.         !,
  141.         ended(11).
  142.  
  143.     question(12) :-
  144.         console::write("Эта посуда предназначена для супов?"),
  145.         !,
  146.         ended(12).
  147.  
  148.     question(13) :-
  149.         console::write("Эта посуда предназначена для выкладывания бутербродов?"),
  150.         !,
  151.         ended(13).
  152.  
  153.     question(14) :-
  154.         console::write("В эту посуду наливают алкоголь?"),
  155.         !,
  156.         ended(14).
  157.  
  158.     question(15) :-
  159.         console::write("Эта посуда предназначена для безалкогольных напитков?"),
  160.         !,
  161.         ended(15).
  162.  
  163.     question(16) :-
  164.         console::write("Эта посуда предназначена для некрепких напитков?"),
  165.         !,
  166.         ended(16).
  167.  
  168.     question(17) :-
  169.         console::write("Эта посуда предназначена для крепких напитков?"),
  170.         !,
  171.         ended(17).
  172.  
  173.     question(18) :-
  174.         console::write("Этой посудой режут пищу?"),
  175.         !,
  176.         ended(18).
  177.  
  178.     question(19) :-
  179.         console::write("Эта посуда предназначена для варки пищи?"),
  180.         !,
  181.         ended(19).
  182.  
  183.     question(20) :-
  184.         console::write("Эта посуда предназначена для жарки пищи?"),
  185.         !,
  186.         ended(20).
  187.  
  188.     question(21) :-
  189.         console::write("Эта посуда пластиковая?"),
  190.         !,
  191.         ended(21).
  192.  
  193.     question(22) :-
  194.         console::write("Эта посуда предназначена для хранения мучных изделий?"),
  195.         !,
  196.         ended(22).
  197.  
  198.     question(23) :-
  199.         console::write("Эта посуда предназначена для хранения воды?"),
  200.         !,
  201.         ended(23).
  202.  
  203.     question(24) :-
  204.         console::write("Эта посуда предназначена для хранения варений/солений?"),
  205.         !,
  206.         ended(24).
  207.  
  208. clauses
  209.     data(1, "Посуда", "Столовые приборы", [1]).
  210.     data(2, "Посуда", "Посуда для сервировки стола", [2]).
  211.     data(3, "Посуда", "Посуда для приготовления пищи", [3]).
  212.     data(4, "Посуда", "Посуда для хранения пищи", [4]).
  213.     data(5, "Столовые приборы", "Вилки", [5]).
  214.     data(6, "Столовые приборы", "Ложки", [6]).
  215.     data(7, "Вилки", "Рыбная вилка", [7]).
  216.     data(8, "Вилки", "Десертная вилка", [8]).
  217.     data(9, "Вилки", "Столовая вилка", [9]).
  218.     data(10, "Посуда для сервировки стола", "Тарелки", [10]).
  219.     data(11, "Посуда для сервировки стола", "Питьевая посуда", [11]).
  220.     data(12, "Тарелки", "Глубокие тарелки", [12]).
  221.     data(13, "Тарелки", "Плоские тарелки", [13]).
  222.     data(14, "Питьевая посуда", "Посуда для алкоголя", [14]).
  223.     data(15, "Питьевая посуда", "Стаканы", [15]).
  224.     data(16, "Посуда для алкоголя", "Бокалы", [16]).
  225.     data(17, "Посуда для алкоголя", "Рюмки", [17]).
  226.     data(18, "Посуда для приготовления пищи", "Ножи", [18]).
  227.     data(19, "Посуда для приготовления пищи", "Кастрюли", [19]).
  228.     data(20, "Посуда для приготовления пищи", "Сковороды", [20]).
  229.     data(21, "Посуда для хранения пищи", "Контейнеры", [21]).
  230.     data(22, "Посуда для хранения пищи", "Хлебницы", [22]).
  231.     data(23, "Посуда для хранения пищи", "Кувшины", [23]).
  232.     data(24, "Посуда для хранения пищи", "Банки", [24]).
  233.  
  234. end implement
  235.  
  236. goal
  237.     console::init(),
  238.     console::write("Данная программа по наводящим вопросам определяет посуду.\n'Д' - да, 'Н' - нет.\n\n"),
  239.     lab11::guess("Посуда").
  240.  
Add Comment
Please, Sign In to add comment