Найти минимальное значение в динамической базе данных - 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).

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


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

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

8   голосов , оценка 3.625 из 5
Похожие ответы