Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Очень срочно надо решить задачу на прологе

Артемий Каминский Знаток (467), закрыт 11 лет назад
Люди помогите пожалуйста с задачей на Пролог
надо найти произведение списков (не декартово)
Лучший ответ
Миоко Таканава Гений (51590) 11 лет назад
> произведение списков (не декартово)
Декартово произведение применимо к множествам, значит ваши списки - это множества.
Не декартово произведение множеств - это.. . предполагаю, что это пересечение множеств, так как оно иногда записывается, как арифметическое произведение, без указания символа операции.

Реализацию Пролога тоже не нужно забывать указывать.
Visual Prolog 7:

implement main
  open core, console

constants
  className = "main".
  classVersion = "".

class predicates
  intersection:(integer_list, integer_list, integer_list) procedure (i, i, o).
  belongs:(integer, integer_list) nondeterm (i, i).

clauses
  classInfo(className, classVersion).

clauses
  intersection([ ], _, [ ]).
  intersection([ H | T1 ], L, [ H | T2 ]) :- belongs(H, L), !,intersection(T1, L, T2).
  intersection([ _ | T ], L1, L2) :- intersection(T, L1, L2).
  belongs(X, [ X | _ ]).
  belongs(X, [ _ | T ]) :- belongs(X, T).

clauses
  run():-
    init(),
    intersection([1, 3, 4, 6, 7, 9], [1, 2, 3, 5, 8, 9], L),
    write(L), nl,
    _ = readChar().
end implement main

goal
  mainExe::run(main::run).
Остальные ответы
Похожие вопросы