Questions tagged [prolog]

Пролог (англ. Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.

Prolog является декларативным языком программирования: логика программы выражается в терминах отношений, представленных в виде фактов и правил. Для того, чтобы инициировать вычисления, выполняется специальный запрос к базе знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.

122 questions
4
votes
1 answer

Решение логической задачки на прологе

Задача: Три друга – Петр, Роман и Сергей учатся на математическом, физическом и химическом факультетах университета. Если Петр математик, то Сергей не физик. Если Роман не физик, то Петр – математик. Если Сергей не математик, то Роман –…
ivnku
  • 177
3
votes
1 answer

Проверка, есть ли в строке слова с латинскими буквами

Помогите пожалуйста. Надо проверить, есть ли в строке слова с латинскими буквами. DOMAINS list_string = string* number_list = integer* I = integer C = char PREDICATES nondeterm result nondeterm…
Nick
  • 31
3
votes
1 answer

Изменение исходной булевой функции по правилу де Моргана в Prolog

Доброго дня. Мне нужно написать программу на прологе, которая меняла бы участки выражения на эквивалентные по правилу де Моргана. Сложность в том, что программа получает в качестве аргумента темр состоящий из функторов, которые в свою очередь…
Volv58
  • 45
3
votes
1 answer

Не могли бы Вы помочь осознать, в чем у меня ошибка в коде на языке Prolog?

Не могли бы Вы помочь осознать, в чем у меня ошибка в коде? Очень нужно разобраться.. Задача: Описать на Прологе базу знаний, содержащую следующую информацию: Факты: Алексей – сын Юрия, Юрий – сын Ивана, Сергей – сын Ивана, Александр – сын…
Gadget
  • 135
2
votes
1 answer

Prolog, работа со списками

Вывести на экран список тех студентов, чьи увлечения полностью или частично удовлетворяют определенному списку. domains sym_list=symbol*. predicates student(real, symbol, integer, symbol, sym_list). clauses student(101, alekseev, 1996,…
2
votes
1 answer

Построить список, объединяющий два списка без повторений

Здравствуйте! Даны два списка, имеющие ненулевое пересечение. Построить список, включающий все элементы указанных двух списков без повторений. В моем коде выдает ошибку о недопустимом типе в следующей строке: new_list([H|T],[Y|Tail],List):-…
tryuf
  • 21
2
votes
1 answer

Уровень элемента дерева

Доброго времени суток, помогите пожалуйста с доработкой программы. Задача заключается в поиске уровня максимального элемента в дереве (ниже приведён код рабочей программы). Проблема в том, что по коду мы проходим дерево два раза в поиске…
2
votes
1 answer

Задача на Prolog GNU

Здравствуйте! Помогите доделать задачку на Prolog GNU. Написать функцию, выполняющую над числовым одноуровневым списком следующую операцию. Причем последовательное возведение в степень выполняется справа налево. (A B C ...) —> A^B^C... Дошел до…
1
vote
1 answer

Prolog. Сортировка списка в диапазоне от K до M

День добрый. Возник вопрос по решению данной задачи по языку Prolog: Применить сортировку выбором к элементам простого числового списка, начиная с k-го индекса и заканчивая m-ым. Саму сортировку выбором реализовать удалось. Используется предикат…
1
vote
2 answers

Как сделать, чтобы при запросе выдавались все ответы, а не только один?

Мой код: parent(pamela, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, patricia). parent(patricia, jim). grandparent(X, Y) :- parent(X, Z), parent(Z, Y). % Кто прародители Патриции? query(X) :- grandparent(X, patricia). В…
zcorvid
  • 2,957
1
vote
2 answers

Найдите среднюю стоимость акций за полгода( правая рекурсия)

/Правая рекурсия/ /**Стоимость акций известной фирмы стабильно растѐт на протяжении 6 месяцев, каждый месяц на 0,6%. Найдите среднюю стоимость акций за эти полгода, если известно, что начальная стоимость их была К у.е. **/ run:- write('Введите…
Mishustiq
  • 149
1
vote
1 answer

Помогите подправить предикат. Как преобразовать в строку список вида [1,5,10,10,5,1]?

Visual prolog 5.2 p([],""). p([H|T],S):- p(T,SS), str_int(C,H), str_char(C,R), /*проблема здесь если число >9 то то решение не находится и в окне вывода пусто*/ frontchar(S,R,SS).
Pasha
  • 55
1
vote
1 answer

Не работает данный код на visual prolog 5.2

include "first.inc" predicates nondeterm equation nondeterm znach(integer) goal equation. clauses equation:- readint(R), znach(X1), znach(X2), znach(X3), R = 100*X1+10*X2+X3, write("X1=",X1," X2=",X2," X3=",X3), readchar(_), readchar(_).…
1
vote
1 answer

параллельные прямые(коммутативность и ассоциативность)

Дано задание составить программу, содержащую данные факты и правила, связывающие между собой параллельные и перпендикулярные прямые. даны прямые a,b,c, соответственно прямая а параллельна прямой b, прямая b параллельна прямой c. Данных о…
Snake
  • 23
1
vote
2 answers

Помогите разобраться, в чем ошибка в коде на Прологе?

Задача Описать на Прологе базу знаний «Правители России», содержащую следующие факты: Ярослав Мудрый правил с 1019 по 1054 годы, Изяслав первый правил с 1054 по 1077 годы, Всеволод первый правил с 1078 по 1093 годы, Святополк Второй правил с…
Gadget
  • 135
1
2 3 4