Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 31

Prolog предикаты

03.03.2019, 17:31. Показов 2948. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте. Не давно в университете начали изучать Visual Prolog.Ну после нормальных языков программирования. Это не как не могу понять. Вот пытаюсь решить задачу ну почему то ошибки выскакивают не могу понять почему.
Помогите пожалуйста.
Задание:
Иван, Петр, Михаил и Сергей читали книги. Один читал о путешествиях, Другой - Специализированные книги по программированию, третий - о спорте, четвертый - детектив. Кто про что читал, если: Иван и Петр не читали Специализированные книги по программированию; Михаил и Сергей не читали о спорте; Петр и Михаил не читали детектив; Иван и Сергей не читали о путешествиях.

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
% Copyright
 
implement main
    open core, console
 
class facts
    book : (string).
 
class predicates
    reading : (string, string [out]) multi.
    start : (string [out], string [out], string [out], string [out]) multi.
 
clauses
    book("traveling").
    book("programming").
    book("sport").
    book("detective").
 
    reading("Ivan", N) :-
        reading(Q, N),
        Q <> "programming",
        N <> "traveling".
    reading("Petro", N) :-
        reading(Q, N),
        Q <> "programming",
        N <> "detective".
    reading("Mihail", N) :-
        reading(Q, N),
        Q <> "sport",
        N <> "detective".
    reading("Serhii", N) :-
        reading(Q, N),
        Q <> "sport",
        N <> "traveling".
 
    start(X, X1, X2, X3) :-
        reading("Ivan", X),
        reading("Mihail", X1),
        X <> X1,
        reading("Petro", X2),
        X <> X2,
        X1 <> X2,
        reading("Serhii", X3),
        X <> X3,
        X1 <> X3,
        X2 <> X3.
    run() :-
        start(Q, Q1, Q2, Q3),
        write("Ivan reading: ", Q, "\nMihail reading: ", Q1, "\nPetro reading: ", Q2, "Serhii reading: ", Q3),
        _ = readLine(),
        fail
        or
        succeed.  % place your own code here
 
end implement main
 
goal
    console::runUtf8(main::run).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2019, 17:31
Ответы с готовыми решениями:

Предикаты 1 и 2 в prolog (примеры)
Здравствуйте! Подскажите, пожалуйста, где можно посмотреть самые простые примеры с Random /1 и Random /2 с понятным объяснением? Если...

Встроенные предикаты turbo prolog
Ребята, кто знает, подскажите справочник со списком и описанием встроенных предикатов turbo prolog. Заранее спасибо)

Основные предикаты для работы со списками [GNU Prolog]
Сформулируйте основные предикаты для работы со списками - принадлежит_списку - добавлен_в_список - добавлен_в_конец -...

1
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
05.03.2019, 00:00
Лучший ответ Сообщение было отмечено TommyHard как решение

Решение

Цитата Сообщение от TommyHard Посмотреть сообщение
после нормальных языков программирования.
Хорошее начало для просьб о помощи..
Цитата Сообщение от TommyHard Посмотреть сообщение
ошибки выскакивают не могу понять почему.
Вот серьёзно? Прямо никак не понять? Вот программа начинает выполняться, предикат run -> строка 48, вызов предиката start -> строка 37, вызов предиката reading ->и тут же в строке 20 рекурсивный вызов предиката reading - что он должен означать? Предикат reading описан как (in, out) - а тут в него зачем-то две свободных переменных.. И дальше написано так. как будто оба они книги..
Цитата Сообщение от TommyHard Посмотреть сообщение
Помогите пожалуйста.
Выкиньте нафиг этот reading. Напишите просто
Prolog
1
2
3
4
 start(X, X1, X2, X3) :-
    book(X),
    book(X1),
    ...
Хотя я бы дал осмысленные имена переменных:
Prolog
1
2
3
4
 start(Ivan, Mihail, Petro, Serhii) :-
    book(Ivan),
    book(Mihail),
    ...
Сам предикат start написан вполне приемлемо, но почему-то Вы большую часть логики вынесли в reading. Не надо, реализуйте эту логику в start напрямую. Примерно так:
Prolog
1
2
3
4
5
6
7
8
9
 start(Ivan, Mihail, Petro, Serhii) :-
    book(Ivan),
    Ivan <> "programming",
    Ivan <> "traveling",
    book(Mihail),
    Mihail <> Ivan,
    Mihail <> "sport",
    Mihail <> "detective",
    ...
Удачи
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2019, 00:00
Помогаю со студенческими работами здесь

Встроенные предикаты. Предикаты взаимодействия, размещение данных
Есть три вопроса: С равенством разобрался, вроде ничего сложного. Про предикаты нашел много инфы, но про предикаты взаимодействия и...

Как переделать программу написанную на Turbo-Prolog в SWI-Prolog?
Ребята подскажите пожалуйста как переделать эту программу написанную на Turbo-Prolog в SWI-Prolog? domains i=integer il=i* ...

Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog
DOMAINS l_i=integer* l_s=string* i=integer s=string c=char structura=str(i,s) %Структура Порода-Параметры и его список ...

Из Turbo Prolog в Visual Prolog - где будут отличия в коде?
ребята ,помогите. есть прога на турбо прологе,а нужно отредактировать под visual prolog 7.5. Что изменится? Где отличия?.. ниже...

В Turbo-Prolog есть возможность описать Goal. Как это реализовано в SWI-Prolog
Здравствуйте. в Turbo-Prolog есть возможность описать Goal: Goal father(X,_), write(X). И ответ мы получим сразу при запуске...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru