Найти минимальное значение в динамической базе данных - Prolog
Формулировка задачи:
Друзья, помогите пожалуйста.
Написал программу для работы с динамической базой данных, которая содержит информацию о металлах: название, электропроводность, цена. Задача ещё состоит в том, чтобы найти по базе такой металл, который имеет минимальное значение сопротивления и при этом минимальную цену. Собственно, не могу понять, как это сделать на прологе используя динамическую базу данных....
Подскажите куда копать, потому что не знаю, как это сделать на прологе...
Вот набросал примерную базу данных, которая сохраняется в файле. В таблице: название металла, электр. сопротивление, цена металла выраженная в долларах за 1 грамм. Как, исходя из этой базы, найти мне металлы, которые имеют низкое сопротивление и низкую цену?
Решение задачи: «Найти минимальное значение в динамической базе данных»
textual
Листинг программы
database % ---- отдельный факт в базе для сохранения рекорда record(symbol, real) predicates getMinimumConduction(symbol, real) clauses getMinimumConduction(Name, Conduction) :- % ---- инициализация значения рекорда retractall(record(_, _)), assert(record("Not found", 10000)), % ---- в этой точке возникнет развилка (для перебора вариантов) dmetall(CurrentName, CurrentConduction, _), record(RecordName, RecordConduction), % ---- если условие не выполняется, сразу откат к развилке CurrentConduction < RecordConduction, % ---- если условие выполняется, обновляем значение рекорда retractall(record(_, _)), assert(record(CurrentName, CurrentConduction)), % ---- принудительный откат к развилке для продолжения перебора fail; % ---- эта ветка сработает, когда перебор закончтся record(Name, Conduction).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д