У меня есть вопрос относительно моей задачи. Задача:Prolog Free Days Code
У людей есть назначенные им дни. В эти дни они свободны для работы.
Карл свободно на Mo, ср, чт
Лукас свободно на Вт, Ср, Чт, Пт
Джон свободно на Mo, Ср, Sa
Alex свободен на Thu, Fr, Sa
Max is бесплатно на Мо, Ср, Пт, Сб, Вс
Я создал базу знаний для этих предположений:
free(Karl,Mo).
free(Karl,Wed).
free(Karl,Thu).
..
..
free(Max,Su).
4 Задаются вопросы:
бесплатно на день Y Является ли лицо Х .
Когда есть свободные люди.
Какие лица свободны 2/3/4 дня в строке.
Кто бесплатно 3 дня подряд.
Вопросы 1 просты.
?- free(X,Day).
Cant выяснить последние 3.
Спасибо за вашу помощь.
На 2-4 вы должны написать код: предикаты, описывающие логику соответствуют критериям. Что вы пробовали? Кроме того, у вас будет проблема с тем, как вы сейчас показываете свои факты. В Prolog переменные начинаются с заглавной буквы или '_', а атомы начинаются с нижнего регистра. 'free (Karl, Mo)' имеет две переменные. Вы должны либо заключить их в одинарные кавычки ('free ('Karl', 'Mo')'), либо использовать строчные буквы 'free (karl, mo)') или использовать микс ('free ('Karl', mo) '). – lurker
Я бы также рекомендовал изменить стиль дня от wordy-атомов до целых чисел, так что вам не нужно определять, что tue следует за mo, например. –