Advertisement
Guest User

Animals

a guest
Nov 13th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.11 KB | None | 0 0
  1. % Conditions
  2. cond(1, "Can swim").       % mojet plavat
  3. cond(2, "Has strips").     % imeet poloski
  4. cond(3, "A bird").     % ptica
  5. cond(4, "Can fly").        % mojet letat
  6. cond(5, "Mammal").     % mlekopitaushee
  7. cond(6, "Has horns").      % imeet roga
  8. cond(7, "Has hooves").     % imeet kopita
  9. cond(8, "Predator").       % hishnik
  10. cond(9, "Has feathers").   % imeet perja
  11. cond(10, "Laying eggs").   % otkladivaet yajza
  12. cond(11, "Herbivore").     % travojadnoe
  13. cond(12, "Has wool").      % imeet sherst
  14. cond(13, "Has spots").     % imeet pyatna
  15. cond(14, "Has tentacles"). % imeet shupalza
  16. cond(15, "Has claws").     % imeet kogti
  17. cond(16, "Has long neck"). % imeet dlinnuyu sheyu
  18. cond(17, "Has long legs"). % imeet dlinnie nogi
  19.  
  20. membere(X, [X|_]).
  21. membere(X, [_|Tail]) :-
  22.     membere(X,Tail).
  23.  
  24. check(2,I,L,L).
  25. check(1,I,L,[I|L]).
  26.  
  27. writeans(1) :-
  28.     write("+"),
  29.     write(nl).
  30.  
  31. writeans(2) :-
  32.     write("-"),
  33.     write(nl).
  34.  
  35. check_cond(17,L,L).
  36. check_cond(I,L,A) :-
  37.     cond(I,S),
  38.     write(I + ". " + S + "?   "),
  39.     read(C, I + ". " + S + "?   "),
  40.     check(C, I, L, L1),
  41.     writeans(C),
  42.     X is I + 1,
  43.     check_cond(X, L1, A).
  44.  
  45. eqlist([], L).
  46. eqlist([H|T], L):-
  47.     membere(H, L),
  48.     eqlist(T, L).
  49.  
  50. update:-
  51.     write("\nEnter animal name"),
  52.     read(S, "Enter animal name: "),
  53.     write("\nEnter rules of new animal"),
  54.     read(L, "Enter rules of new animal: "),
  55.     write("\nAdded new animal: "),
  56.     write(S),
  57.     assert_in(rule(S,L)).
  58.  
  59. animals :-
  60.     write("\nChoose rules of animal:\n"),
  61.     L is [],
  62.     check_cond(1, L, A),
  63.     rule(S, L1),
  64.     eqlist(L1, A),
  65.     eqlist(A, L1),
  66.     write("I think it is "),
  67.     write(S),
  68.     write(nl).
  69. animals :-
  70.     write("\nThere is no that animal.").
  71.     write("\nUse 'Add new animal' action to add new animal").
  72.  
  73. menu :-
  74.     write("Menu:\n1. Add new animal\n"),
  75.     write("2. Check animal\n"),
  76.     write("3. Exit\n"),
  77.     read(C),
  78.     menu_point(C), menu.
  79.  
  80. menu_point(1) :- update.
  81. menu_point(2) :- animals.
  82.  
  83. ?- menu.
  84.  
  85. % Rules
  86. rule("cheetah", [5, 8, 12, 13, 15]).
  87. rule("tiger", [2, 5, 8, 11, 15]).
  88. rule("giraffe", [5, 7, 11, 12, 13, 16, 17]).
  89. rule("penguin", [1, 3, 5, 8, 9, 10, 15]).
  90. rule("octopus", [1, 8, 10, 14]).
  91. rule("cat",[1,2,3]) .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement