Экспертная система на SWI Prolog

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пытаюсь написать простую экспертную систему. Данные считываются с клавиатуры и проверяются на соответствие в базе знаний. Искомым языком является тот, который удовлетворяет всем четырем условиям одновременно.
Листинг программы
  1. /* Paradigms */
  2. paradigm('Ada', 'Imperative').
  3. paradigm('C', 'Imperative').
  4. paradigm('C#', 'ObjectOriented').
  5. paradigm('C++', 'ObjectOriented').
  6. paradigm('Java', 'Distributed').
  7. paradigm('JavaScript', 'Reflexive').
  8. paradigm('PHP', 'Declarative').
  9. paradigm('Python', 'Functional').
  10. paradigm('Ruby', 'GeneralProgramming').
  11. paradigm('Smalltalk', 'Functional').
  12. /* Typization */
  13. typization('Ada', 'Statical').
  14. typization('C', 'Explicit').
  15. typization('C#', 'Polymorfism').
  16. typization('C++', 'Statical').
  17. typization('Java', 'RuntimeTypeInformation').
  18. typization('JavaScript', 'Dynamical').
  19. typization('PHP', 'Implicit').
  20. typization('Python', 'CastWithoutDataLose').
  21. typization('Ruby', 'ImplicitCastWithoutDataLose').
  22. typization('Smalltalk', 'ArgumentOutputAtMethodCall').
  23. /* Compiler */
  24. compiler('Ada', 'OpenSource').
  25. compiler('C', 'DebugPosibility').
  26. compiler('C#', 'Bootstrapping').
  27. compiler('C++', 'MultithreadingCompilation').
  28. compiler('Java', 'ConditionalCompilation').
  29. compiler('JavaScript', 'CommandLineInterpreter').
  30. compiler('PHP', 'DebugPosibility').
  31. compiler('Python', 'OpenSource').
  32. compiler('Ruby', 'Bootstrapping').
  33. compiler('Smalltalk', 'ConditionalCompilation').
  34. /* Memory */
  35. memory('Ada', 'Stack').
  36. memory('C', 'Pointer').
  37. memory('C#', 'ManualMemoryManagement').
  38. memory('C++', 'Stack').
  39. memory('Java', 'GarbageCollector').
  40. memory('JavaScript', 'GarbageCollector').
  41. memory('PHP', 'GarbageCollector').
  42. memory('Python', 'GarbageCollector').
  43. memory('Ruby', 'GarbageCollector').
  44. memory('Smalltalk', 'Pointer').
  45. language(L, P, T, C, M) :- paradigm(L, P), typization(L, T), compiler(L, C), memory(L, M).
  46. run :- write('\nChoose language paradigm:\n1. imperative\n2. object-oriented\n3. distributed\n4. reflexive\n5. declarative\n6. functional\n7. general programming\n'), read(P),
  47. write('\n\nChoose typization:\n1. statical\n2. explicit\n3. polymorfism\n4. runtime type information\n5. dynamical\n6. implicit\n7. cast without data lose\n8. implicit cast without data lose\n9. argument output at method call\n'), read(T),
  48. write('\n\nChoose compiler type:\n1. open-source\n2. debug posibility\n3. bootstrapping\n4. multithreading compilation\n5. conditional compilation\n6. command line interpreter\n'), read(C),
  49. write('\n\nChoose memory management type:\n1. stack\n2. pointer\n3. manual memory management\n4. garbage collector\n'), read(M),
  50. language(L, P, T, C, M), !,
  51. write(L).
Какие бы тесты не вводил, всегда выводится язык Ada. Если убрать отсечение в предпоследней строке, то всегда будут выводиться все языки, кроме последнего. Подскажите, в чем ошибка и как ее исправить? Заранее спасибо!

Решение задачи: «Экспертная система на SWI Prolog»

textual
Листинг программы
  1. ?- run.
  2.  
  3. Choose language paradigm:
  4. 1. imperative
  5. 2. object-oriented
  6. 3. distributed
  7. 4. reflexive
  8. 5. declarative
  9. 6. functional
  10. 7. general programming
  11. |: 'Imperative'.
  12.  
  13.  
  14. Choose typization:
  15. 1. statical
  16. 2. explicit
  17. 3. polymorfism
  18. 4. runtime type information
  19. 5. dynamical
  20. 6. implicit
  21. 7. cast without data lose
  22. 8. implicit cast without data lose
  23. 9. argument output at method call
  24. |: 'Explicit'.
  25.  
  26.  
  27. Choose compiler type:
  28. 1. open-source
  29. 2. debug posibility
  30. 3. bootstrapping
  31. 4. multithreading compilation
  32. 5. conditional compilation
  33. 6. command line interpreter
  34. |: 'DebugPosibility'.
  35.  
  36.  
  37. Choose memory management type:
  38. 1. stack
  39. 2. pointer
  40. 3. manual memory management
  41. 4. garbage collector
  42. |: 'Pointer'.
  43. C
  44. true.
  45.  
  46. ?-

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут