From 1181b4b4e76189a41bc89a4d9d240795f996b349 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Sat, 8 Jun 2024 15:00:45 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=20=D1=8D=D0=BA=D1=81=D0=BF=D0=B5=D1=80=D1=82=D0=BD=D0=B0=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task7.pro | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 task7.pro 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. -- cgit v1.2.3