Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Добавление всех решений переменной в список
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
santypa santypa вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2014
По умолчанию Добавление всех решений переменной в список - 09.11.2014, 23:14

Всем привет) В прологе я новичок. И вот столкнулась с такой проблемой - нужно занести все решения, полученный для переменной в список ПОСЛЕДОВАТЕЛЬНО! Поясню, что имею в виду.
prolog Код:
список(...).
число(...).
список_чисел([X|List]):-  список(List),число(X).

GOAL
список_чисел(Список).

В ответ выдает, например
Список = [1] %при Х=1
Список = [2] %при Х=2

А нужно
Список = [1,2]

Подскажите, как это можно реализовать и можно ли вообще? Просто пока ничего не получается.
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 09.11.2014, 23:56

Вот так примерно:
Visual Prolog Код:
список_чисел([X|List]):-следующее_решение(X),список_чисел(List).
список_чисел([]).

Ещё посмотрите предикат findAll. Он сам собирает все решения в список.
Ответить с цитированием
  (#3 (permalink)) Старый
santypa santypa вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2014
По умолчанию 10.11.2014, 01:25

Большое спасибо!!!
Только еще есть пару вопросов: можно ведь предикат findAll использовать в правиле? Просто на таком примере
prolog Код:
CLAUSES
список([1,3,1,1,2]).
индекс(A,[A|_],1).
индекс(A,[_|T],L):- индекс(A,T,L1),L=L1+1.
число(X):-              write("Введите число"),nl,readInt(A),nl,список(L),индекс(A,L,X),findAll(X,число(X),L).
GOAL
число(X).
выдает ошибку:
428 The free variable in 'findall' can only be used inside 'findall'
Если несложно, подскажите, как данный предикат правильно использовать в таких случаях?
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 10.11.2014, 01:50

Вот пример со списком (фильтрация по условию >2):
Visual Prolog Код:
CLAUSES
список([1,3,5,4,2]).
get(A,[A|_]):-A>2.
get(A,[_|L]):-get(A,L).
GOAL
список(Q).
findAll(X,get(X,Q),L),
write(L).

Вот пример с фактами (сборка в список):
Visual Prolog Код:
CLAUSES
число(5).  число(2).  число(3).  число(8).  
GOAL
findAll(X,число(X),L),
write(L).
Ответить с цитированием
  (#5 (permalink)) Старый
santypa santypa вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2014
По умолчанию 10.11.2014, 01:55

Хорошо. Еще раз огромное спасибо
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление новых элементов в один и тот же список Gitarskaya Prolog 7 12.06.2012 13:53
Упорядоченое добавление элементов в двусвязный список Genochka Вопросы начинающих программистов 0 08.04.2012 21:08
Добавление элементов в список Stiker_534 С/С++ 0 29.05.2011 19:08
добавление элемента в список katik Prolog 2 17.04.2011 17:45
Список глобальной переменной lucifloki Prolog 2 18.11.2010 14:13
Как реализовать добавление в список Евгений А. С/С++ 4 14.04.2010 19:38
Генерация всех решений в Turbo Prolog Nelo-cool Prolog 2 08.03.2010 18:06
Добавление в список несписочных элементов dimon_nov Prolog 2 04.01.2010 03:04
Добавление элементов в список imported_WildCat Prolog 1 30.10.2008 19:34
Добавление элемента в список doom_mm Prolog 8 23.04.2007 13:02
Добавление элемента в список по условию Emeryk Prolog 2 17.11.2006 15:02
Изменение имени переменной для всех её вхождений в коде K-Yas Visual C++ 13 22.10.2004 14:49



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов