Как динамически установить домен для списка - PullRequest
0 голосов
/ 12 апреля 2011

например, я создаю список, следующий

length(List,5),
List :: 1..5,

Я хочу установить второй элемент списка, похоже List[1] :: 1..2% Список, от 0 до 4

Не знаю, как это реализовать?

большое спасибо:)

1 Ответ

1 голос
/ 12 апреля 2011

Например, используя оператор in в Swi-прологе, я могу сделать так:

init_static(List) :- length(List, 5), List in 1..5, List = [_,Y|_], Y in 1..2.

, если я заранее знаю, что мне нужны определенные ограничения для второго элемента.

Обобщение для любого индекса:

init_dynamic(I, List) :- length(List, 5), List in 1..5, length(L1, I), Y in 1..2, append(L1, [Y|_], List).

Итак, запрос для второго элемента:

init_dynamic(1, [1,2,4,3,5]).
true.

Я предполагаю, что вы можете делать подобные вещи с оператором :: в других прологах.варианты.

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