diff options
| -rw-r--r-- | task7.pro | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/task7.pro b/task7.pro new file mode 100644 index 0000000..9a50a07 --- /dev/null +++ b/task7.pro @@ -0,0 +1,72 @@ +% vim:set syntax=prolog: + +запомнить(Арг, Арг2, да):- assert(верно(Арг, Арг2)). +запомнить(Арг, Арг2, нет):- assert(ложно(Арг, Арг2)). + +узнать(Арг, Арг2, Ответ):- write(Арг), write(" "), write(Арг2), read(Ответ), запомнить(Арг, Арг2, Ответ). + +свойство(Арг, Арг2):- верно(Арг, Арг2), !. +свойство(Арг, Арг2):- not(ложно(Арг, Арг2)), узнать(Арг, Арг2, Ответ), Ответ=да. + +нет_свойства(Арг, Арг2):- ложно(Арг, Арг2), !. +нет_свойства(Арг, Арг2):- not(верно(Арг, Арг2)), узнать(Арг, Арг2, Ответ), Ответ=нет. + +это("подходит для обработки транзакций") :- + свойство("Поддерживает", "точность и согласованность данных"), + свойство("Поддерживает", "атомарные транзакции"). +это("подходит для кэширования") :- + свойство("Хранение данных", "в оперативной памяти"). +это("не требует проектирования БД") :- + свойство("Хранение данных", "в текстовом формате обмена данными"), + свойство("Хранение данных", "в неструктурированном виде"). +это("реляционная БД") :- + свойство("Храние данных", "в строках и колонках"), + свойство("Использует", "язык SQL"), + это("подходит для обработки транзакций"). +это("документо-ориентированная БД") :- + это("не требует проектирования БД"), + not(свойство("Использует", "язык SQL")), + свойство("Подходит для", "систем управления контентом"). +это("key-value БД") :- + это("документо-ориентированная БД"), + это("подходит для кэширования"). +это("графовая БД") :- + свойство("Хранение данных", "в виде узлов и соединений"), + свойство("Подходит для", "социальных сетей"), + свойство("Подходит для", "рекомендательных систем"). +это("объектно-ориентированная БД") :- + свойство("Хранение данных", "в виде объектов с методами"), + свойство("Подходит для", "объекто-ориентированных приложений"), + свойство("Подходит для", "мультимедийных приложений"). +это("OLAP БД") :- это("реляционная БД"), свойство("Данные хранятся", "по колонкам"). + + +цель:- бд(Арг), !, writeln(Арг), очистить. +цель:- write("Не удалось подобрать СУБД"), очистить. + +бд("Postgres") :- это("реляционная БД"), свойство("Данные хранятся", "построчно"). +бд("Clickhouse") :- это("OLAP БД"). +бд("Redis") :- это("key-value БД"), not(свойство("Является", "свободной для использования")). +бд("memcached") :- это("key-value БД"). +бд("OrientDB") :- это("графовая БД"). +бд("ObjectDB") :- это("объектно-ориентированная БД"). + +% лицензия("GNU GPL v3") :- свойство("Требует", "открыть исходный код"), +% свойство("Требует", "указать изменения относительно оригинала"), +% свойство("Требует", "включить лицензию в изменённый проект"), +% свойство("Не позволяет", "привлекать к ответственности"), +% свойство("Разрешает", "коммерческое использование"). +% лицензия("GNU GPL v2") :- . +% лицензия("BSD 3-clause") :- . +% лицензия("MIT License") :- . +% лицензия("Apache License 2.0") :- . +% лицензия("Mozilla Public License") :- . +% лицензия("EULA") :- . + + +:- dynamic верно/2, ложно/2. +очистить:- retract(верно(_,_)), fail. +очистить:- retract(ложно(_,_)), fail. + + +% ?- halt. |