Экспертная система на SWI Prolog
Формулировка задачи:
Здравствуйте! Пытаюсь написать простую экспертную систему. Данные считываются с клавиатуры и проверяются на соответствие в базе знаний. Искомым языком является тот, который удовлетворяет всем четырем условиям одновременно.
Какие бы тесты не вводил, всегда выводится язык Ada. Если убрать отсечение в предпоследней строке, то всегда будут выводиться все языки, кроме последнего. Подскажите, в чем ошибка и как ее исправить? Заранее спасибо!
Листинг программы
- /* Paradigms */
- paradigm('Ada', 'Imperative').
- paradigm('C', 'Imperative').
- paradigm('C#', 'ObjectOriented').
- paradigm('C++', 'ObjectOriented').
- paradigm('Java', 'Distributed').
- paradigm('JavaScript', 'Reflexive').
- paradigm('PHP', 'Declarative').
- paradigm('Python', 'Functional').
- paradigm('Ruby', 'GeneralProgramming').
- paradigm('Smalltalk', 'Functional').
- /* Typization */
- typization('Ada', 'Statical').
- typization('C', 'Explicit').
- typization('C#', 'Polymorfism').
- typization('C++', 'Statical').
- typization('Java', 'RuntimeTypeInformation').
- typization('JavaScript', 'Dynamical').
- typization('PHP', 'Implicit').
- typization('Python', 'CastWithoutDataLose').
- typization('Ruby', 'ImplicitCastWithoutDataLose').
- typization('Smalltalk', 'ArgumentOutputAtMethodCall').
- /* Compiler */
- compiler('Ada', 'OpenSource').
- compiler('C', 'DebugPosibility').
- compiler('C#', 'Bootstrapping').
- compiler('C++', 'MultithreadingCompilation').
- compiler('Java', 'ConditionalCompilation').
- compiler('JavaScript', 'CommandLineInterpreter').
- compiler('PHP', 'DebugPosibility').
- compiler('Python', 'OpenSource').
- compiler('Ruby', 'Bootstrapping').
- compiler('Smalltalk', 'ConditionalCompilation').
- /* Memory */
- memory('Ada', 'Stack').
- memory('C', 'Pointer').
- memory('C#', 'ManualMemoryManagement').
- memory('C++', 'Stack').
- memory('Java', 'GarbageCollector').
- memory('JavaScript', 'GarbageCollector').
- memory('PHP', 'GarbageCollector').
- memory('Python', 'GarbageCollector').
- memory('Ruby', 'GarbageCollector').
- memory('Smalltalk', 'Pointer').
- language(L, P, T, C, M) :- paradigm(L, P), typization(L, T), compiler(L, C), memory(L, M).
- run :- write('\nChoose language paradigm:\n1. imperative\n2. object-oriented\n3. distributed\n4. reflexive\n5. declarative\n6. functional\n7. general programming\n'), read(P),
- 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),
- 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),
- write('\n\nChoose memory management type:\n1. stack\n2. pointer\n3. manual memory management\n4. garbage collector\n'), read(M),
- language(L, P, T, C, M), !,
- write(L).
Решение задачи: «Экспертная система на SWI Prolog»
textual
Листинг программы
- ?- run.
- Choose language paradigm:
- 1. imperative
- 2. object-oriented
- 3. distributed
- 4. reflexive
- 5. declarative
- 6. functional
- 7. general programming
- |: 'Imperative'.
- Choose typization:
- 1. statical
- 2. explicit
- 3. polymorfism
- 4. runtime type information
- 5. dynamical
- 6. implicit
- 7. cast without data lose
- 8. implicit cast without data lose
- 9. argument output at method call
- |: 'Explicit'.
- Choose compiler type:
- 1. open-source
- 2. debug posibility
- 3. bootstrapping
- 4. multithreading compilation
- 5. conditional compilation
- 6. command line interpreter
- |: 'DebugPosibility'.
- Choose memory management type:
- 1. stack
- 2. pointer
- 3. manual memory management
- 4. garbage collector
- |: 'Pointer'.
- C
- true.
- ?-
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д