Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Svetka
0 / 0 / 1
Регистрация: 15.11.2014
Сообщений: 2
1

Динамические базы данных, аналог findall.

17.12.2011, 19:24. Просмотров 1806. Ответов 5
Метки нет (Все метки)

Здравствуйте! Я хочу обратиться к вам за помощью в решении задачи на Prolog'е. В этом я не сильна и поэтому расчитываю на вашу поддержку.
Вот условие задачи:
Реализовать предикат Search(X,P,L), порождающий список L всех
объектов X, удовлетворяющих цели Р. При решении
использовать предикаты assert, retract и call(P) (вызов цели).
P.S.: Буду очень благодарна каждому кто сможет помочь. Спасибо за внимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 19:24
Ответы с готовыми решениями:

Динамические базы данных
Добрый день, скажите пожалуйста, каковы особенности динамических баз данных, и...

Динамические базы данных
Добрый день! Помогите ответить на 4 вопроса, с фактами в базе данных не...

Динамические Базы Данных с графическим интерфейсом
Помогите , как написать в прологе 5.2 базу данных с оконным интерфейсом ?...

Использование предиката findall
Доброй ночи всем! Есть такая задачка: " Во времена сэра Гектора рыцари...

Пролог работа с предикатом findall
Помогите пжлта, программа написана в прологе. С помощью предиката findall...

5
Грымзик
2477 / 1454 / 34
Регистрация: 14.09.2009
Сообщений: 2,742
17.12.2011, 23:24 2
Свой findall что ли написать
Prolog
1
2
3
4
5
6
7
search(X,P,L):-retractall(x(_)),s(X,P),to_list(L).
 
to_list([X|Tail]):-x(X),!,retract(x(X)),to_list(Tail).
to_list([]).
 
s(X,P):-call(P),assert(x(X)),fail.
s(_,_).
?- search(X,permutation(X,[1,2,3]),L).
1
Svetka
0 / 0 / 1
Регистрация: 15.11.2014
Сообщений: 2
18.12.2011, 12:19 3
Спасибо большое!!!
0
АнастасияР
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 3
23.12.2011, 20:38 4
Задача:
Написать предикат findall2,реализующий работу стандартного предиката findall.
нашла 1 вариант:


Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
findall2( X, Цель, ХСпис) :-
    саll( Цель),                                 % Найти решение
    assert( очередь( X) ),                % Добавить егo
    fail;                 % Попытаться найти еще решения
    assertz( очередь( дно) ),
                         % Пометить конец решений
    собрать( ХСпис).                     % Собрать решения в список
 
собрать( L) :-
     retract( очередь(Х) ),  !,
                         % Удалить следующее решение
    ( Х == дно,  !,  L = [ ];
                         % Конец решений?
    L = [X | Остальные], собрать( Остальные) ).
                         % Иначе собрать остальные

но он не работает(
помогите написать правильно.
0
freest
Українець
422 / 316 / 16
Регистрация: 26.09.2009
Сообщений: 844
23.12.2011, 21:36 5
А самому хоть чучуть подумать?
Prolog
1
2
3
4
5
6
7
8
9
10
findall1(X,Goal,_):-
call(Goal),
retract(findallRList(Lr)),
assert(findallRList([X|Lr])),fail.
findall1(_,_,L):-
retract(findallRList(L)),
assert(findallRList([])).
 
 
?- assert(findallRList([])).
0
АнастасияР
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 3
24.12.2011, 20:00 6
да я то подумала) а вы вот слишком подумали) + учитывая то что мы на прологе только до деревьев дошли, то я и не думала пока до баз данных добираться) так что не обязательно подобные комментарии писать) умнее меня лично вас это не делает). а вот мой вариант:


Prolog
1
2
3
4
5
6
7
findall2(X,P,L):-P,
            assert(очередь(X)),
        fail;
                собрать(L).
собрать([X|L]):-retract(очередь(X)),!,
            собрать(L).
собрать([]).
0
24.12.2011, 20:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2011, 20:00

Использование findall в Турбо Прологе
Здравствуйте! Помогите пожалуйста решить задачу: Дан набор из 15 отрезков,...

Использование findall. нахождение пути
Помогите решить задачу,вообще без понятия как ее сделать... Железнодорожное...

findall "This flow pattern doesn't exist"
Ребят нужна помощь. Почему? global domains card =...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru